Как создать каталог на Java?

Как создать папку?

Как только я протестировал System.getProperty("user.home");

Я должен создать папку (имя папки "новая папка" ), если и только если новая папка не существует.

18 ответов


после ~7 года я обновлю его до лучшего подхода, который предлагает Божо.

new File("/path/directory").mkdirs();

удалено:

File theDir = new File("new folder");

// if the directory does not exist, create it
if (!theDir.exists()) {
    System.out.println("creating directory: " + theDir.getName());
    boolean result = false;

    try{
        theDir.mkdir();
        result = true;
    } 
    catch(SecurityException se){
        //handle it
    }        
    if(result) {    
        System.out.println("DIR created");  
    }
}

new File("/path/directory").mkdirs();

здесь "Каталог" - это имя каталога, который вы хотите создать/существовать.


С Java 7, Вы можете использовать Files.createDirectories().

например:

Files.createDirectories(Paths.get("/path/to/directory"));

вы можете попробовать FileUtils#forceMkdir

FileUtils.forceMkdir("/path/directory");

этой библиотека есть много полезных функций.


mkdir vs mkdirs


если вы хотите создать один каталог, используйте mkdir

new File("/path/directory").mkdir();

если вы хотите создать иерархию структуры папок использовать mkdirs

 new File("/path/directory").mkdirs();

  1. создать единый каталог.

    new File("C:\Directory1").mkdir();
    
  2. создайте каталог с именем "Directory2 и все его подкаталоги "Sub2" и "Sub-Sub2" вместе.

    new File("C:\Directory2\Sub2\Sub-Sub2").mkdirs()
    

источник: это идеальная учебник, вы также найдете пример использования.


следующий метод должен делать то, что вы хотите, просто убедитесь, что вы проверяете возвращаемое значение mkdir () / mkdirs()

private void createUserDir(final String dirName) throws IOException {
    final File homeDir = new File(System.getProperty("user.home"));
    final File dir = new File(homeDir, dirName);
    if (!dir.exists() && !dir.mkdirs()) {
        throw new IOException("Unable to create " + dir.getAbsolutePath();
    }
}

для java 7 и выше:

Path path = Paths.get("/your/path/string");
if(!Files.exists(path)) {
    try {
      Files.createDirectories(path);
    } catch (IOException e) {
      e.printStackTrace();
    }
}

хотя этот вопрос был дан ответ. Я хотел бы поставить что-то дополнительное, т. е. если существует файл с именем каталога, который вы пытаетесь создать, он должен вызвать ошибку. Для будущих посетителей.

public static void makeDir()
{
    File directory = new File(" dirname ");
    if (directory.exists() && directory.isFile())
    {
        System.out.println("The dir with name could not be" +
        " created as it is a normal file");
    }
    else
    {
        try
        {
            if (!directory.exists())
            {
                directory.mkdir();
            }
            String username = System.getProperty("user.name");
            String filename = " path/" + username + ".txt"; //extension if you need one

        }
        catch (IOException e)
        {
            System.out.println("prompt for error");
        }
    }
}

просто хотел указать всем, кто звонит File.mkdir() или File.mkdirs() быть осторожным File "объект" - это каталог, а не файл. Например, если вы вызываете mkdirs() на пути /dir1/dir2/file.txt, это создаст папку на имя file.txt что, вероятно, не то, чего вы хотели. Если вы создаете новый файл, а также автоматически создавать родительские папки вы можете сделать что-то вроде этого:

            File file = new File(filePath);
            if (file.getParentFile() != null) {
                file.getParentFile().mkdirs();
            }

аккуратный и чистый:

import java.io.File;

public class RevCreateDirectory {

    public void revCreateDirectory() {
        //To create single directory/folder
        File file = new File("D:\Directory1");
        if (!file.exists()) {
            if (file.mkdir()) {
                System.out.println("Directory is created!");
            } else {
                System.out.println("Failed to create directory!");
            }
        }
        //To create multiple directories/folders
        File files = new File("D:\Directory2\Sub2\Sub-Sub2");
        if (!files.exists()) {
            if (files.mkdirs()) {
                System.out.println("Multiple directories are created!");
            } else {
                System.out.println("Failed to create multiple directories!");
            }
        }

    }
}

попробуй этим.

import java.io.File;

public class MakingDirectory {
 public static void main(String[] args) {
      String s="d:\msreddy\sample1";
      File file=new File(s);
      file.mkdirs();
}
}

для получения дополнительной информации посмотреть этого.


создать папку в Java, у нас есть два метода

здесь метод makedirectory создает один каталог, если он не существует.

File dir = new File("path name");
boolean isCreated = dir.mkdir();

и

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

здесь метод makedirectories создаст все каталоги, отсутствующие в пути, который представляет объект file.

например, см. ссылку ниже (очень хорошо объяснил). Надеюсь на это. помогает!! http://www.flowerbrackets.com/create-directory-java-program/


Это способ работы для меня сделать один каталог или несколько или их: необходимо импортировать java.Ио.Файл;
/ * введите код ниже, чтобы добавить diectory dir1 или проверить, существует ли dir1, если нет, поэтому создайте его и то же самое с dir2 и dir3 */

    File filed = new File("C:\dir1");
    if(!filed.exists()){  if(filed.mkdir()){ System.out.println("directory is created"); }} else{ System.out.println("directory exist");  }

    File filel = new File("C:\dir1\dir2");
    if(!filel.exists()){  if(filel.mkdir()){ System.out.println("directory is created");   }} else{ System.out.println("directory exist");  }

    File filet = new File("C:\dir1\dir2\dir3");
    if(!filet.exists()){  if(filet.mkdir()){ System.out.println("directory is  created"); }}  else{ System.out.println("directory exist");  }

эта функция позволяет создать каталог в домашнем каталоге пользователя.

private static void createDirectory(final String directoryName) {
    final File homeDirectory = new File(System.getProperty("user.home"));
    final File newDirectory = new File(homeDirectory, directoryName);
    if(!newDirectory.exists()) {
        boolean result = newDirectory.mkdir();

        if(result) {
            System.out.println("The directory is created !");
        }
    } else {
        System.out.println("The directory already exist");
    }
}

если вы хотите быть уверены, что его создали тогда этот:

final String path = "target/logs/";
final File logsDir = new File(path);
final boolean logsDirCreated = logsDir.mkdir();
if (!logsDirCreated) {
    final boolean logsDirExists = logsDir.exists();
    assertThat(logsDirExists).isTrue();
}

, потому что mkDir() возвращает логическое значение, и findbugs будет плакать, если вы не используете переменную. Также это не приятно...

mkDir() возвращает только true, если mkDir() создает его. Если dir существует, он возвращает false, поэтому, чтобы проверить созданный вами dir, только вызовите exists() если mkDir() возвращает false.

assertThat() будет проверять результат и терпит неудачу, если exists() возвращает false. ОФК вы можете использовать другие вещи для обработки созданного каталога.


public class Test1 {
    public static void main(String[] args)
    {
       String path = System.getProperty("user.home");
       File dir=new File(path+"/new folder");
       if(dir.exists()){
           System.out.println("A folder with name 'new folder' is already exist in the path "+path);
       }else{
           dir.mkdir();
       }

    }
}

можно найти makdir ()функция для создания нового каталога в папку, где вы хотите.