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

Как мне создать каталог / папку?

Однажды я проверил System.getProperty("user.home");

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

19 ответов

Решение

Через ~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

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()
    

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

Для Java 7 и выше:

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

Следующий метод должен делать то, что вы хотите, просто убедитесь, что вы проверяете возвращаемое значение 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 у нас есть два метода

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

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

А также

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

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

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

С иголочки:

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!");
            }
        }

    }
}

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

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();
            }

Этот способ работы для меня сделать один или несколько каталогов или их: необходимо импортировать java.io.File;
/ * введите код, указанный ниже, чтобы добавить 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");  }

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

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();
}
}

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

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

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();
}

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

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

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

Вот одна из привлекательных сторон Java, использующая Short Circuit OR '||', проверка существования каталога и создание каталога для вас

      public File checkAndMakeTheDirectory() {
    File theDirectory = new File("/path/directory");
    if (theDirectory.exists() || theDirectory.mkdirs())
        System.out.println("The folder has been created or has been already there");
    return theDirectory;
}

если первая часть if истинна, вторая часть не запускается, а если первая часть ложна, запускается и вторая часть

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

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");
    }
}
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() для создания нового каталога в папке, где вы хотите.

Другие вопросы по тегам