如何在Java中创建目录?

时间:2010-09-03 10:27:40

标签: java directory

如何创建目录/文件夹?

我测试过System.getProperty("user.home");

当且仅当新文件夹不存在时,我必须创建一个目录(目录名“新文件夹”)。

17 个答案:

答案 0 :(得分:472)

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

此处“directory”是您要创建/存在的目录的名称。

答案 1 :(得分:413)

大约7年后,我会将其更新为Bozho建议的更好的方法。

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

答案 2 :(得分:127)

使用Java 7,您可以使用Files.createDirectories()

例如:

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

答案 3 :(得分:37)

您可以尝试FileUtils#forceMkdir

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

这个library有很多有用的功能。

答案 4 :(得分:27)

mkdir vs mkdirs

如果要创建单个目录,请使用mkdir

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

如果要创建文件夹结构的层次结构,请使用mkdirs

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

答案 5 :(得分:21)

  1. 创建一个目录。

    new File("C:\\Directory1").mkdir();
    
  2. 一起创建名为“Directory2及其所有子目录”Sub2“和”Sub-Sub2“的目录。

    new File("C:\\Directory2\\Sub2\\Sub-Sub2").mkdirs()
    
  3. 来源:这个完美的tutorial,你也找到了一个使用的例子。

答案 6 :(得分:12)

对于java 7及更高版本:

Path path = Paths.get("/your/path/string");
Files.createDirectories(path);

在创建from createDirectories javadocs

之前,似乎没有必要检查目录或文件是否存在
  

首先通过创建所有不存在的父目录来创建目录。与createDirectory方法不同,如果由于目录已存在而无法创建目录,则不会引发异常。   attrs参数是可选的文件属性,用于在创建不存在的目录时以原子方式设置。每个文件属性都由其名称标识。如果数组中包含多个同名属性,则忽略除最后一次出现之外的所有属性。

     

如果此方法失败,则可以在创建一些(但不是全部)父目录后执行此操作。

答案 7 :(得分:7)

以下方法应该执行您想要的操作,只需确保检查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();
    }
}

答案 8 :(得分:4)

虽然这个问题已得到解答。我想加点额外的东西,即 如果存在您尝试创建的目录名称的文件,则应该提示错误。对于未来的访客。

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

答案 9 :(得分:4)

整洁干净:

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

    }
}

答案 10 :(得分:4)

在java中创建Directory /文件夹我们有两种方法

如果makedirectory方法不存在,那么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/

答案 11 :(得分:3)

只是想指出所有呼叫File.mkdir()File.mkdirs()的人都要小心File对象是目录而不是文件。例如,如果您为路径mkdirs()调用/dir1/dir2/file.txt,则会创建一个名为file.txt文件夹,这可能不是您想要的。如果您要创建新文件并且还想自动创建父文件夹,则可以执行以下操作:

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

答案 12 :(得分:2)

这对我的工作方式是单个目录还是更多或者它们: 需要导入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");  }

答案 13 :(得分:0)

此功能允许您在用户主目录上创建目录。

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

答案 14 :(得分:0)

如果你想确定它的创建,那么:

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()创建时才返回true。 如果dir存在,则返回false,因此要验证您创建的目录,只有在exists()返回false时才调用mkDir()

如果assertThat()返回false,

exists()将检查结果并失败。 ofc你可以使用其他东西来处理未创建的目录。

答案 15 :(得分:-2)

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

    }
}

答案 16 :(得分:-7)

您还可以参考makdir() 功能在您想要的文件夹中创建新目录。