如何在Java中创建目录?

如何在Java中创建目录?,java,directory,Java,Directory,如何创建目录/文件夹 一旦我测试了System.getProperty(“user.home”) 当且仅当新文件夹不存在时,我必须创建一个目录(目录名为“new folder”) new File("/path/directory").mkdirs(); File dir = new File("path name"); boolean isCreated = dir.mkdir(); 这里的“目录”是您要创建/存在的目录的名称。在~7年后,我将更新它,以更好的方式进行更新,这是作者建议的

如何创建目录/文件夹

一旦我测试了
System.getProperty(“user.home”)

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

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

这里的“目录”是您要创建/存在的目录的名称。

在~7年后,我将更新它,以更好的方式进行更新,这是作者建议的


下面的方法应该执行您想要的操作,只需确保您正在检查/

你可以试试


这有很多有用的功能。

尽管这个问题已经得到了回答。我想放一些额外的东西,例如。
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();
       }

    }
}
如果存在您试图创建的目录名为的文件,则会提示错误。为未来的游客

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

此函数允许您在用户主目录上创建目录

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");
    }
}
new File("C:\\Directory1").mkdir();
  • 创建一个目录

    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");
        }
    }
    
    new File("C:\\Directory1").mkdir();
    
  • 创建一个名为“Directory2”的目录及其所有子目录“Sub2”和“sub-Sub2”

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

  • 来源:这个完美的,你也可以找到一个使用的例子。

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

                File file = new File(filePath);
                if (file.getParentFile() != null) {
                    file.getParentFile().mkdirs();
                }
    
    mkdir vs mkdirs
    如果要创建单个目录,请使用
    mkdir

    new File("/path/directory").mkdir();
    
    如果要创建文件夹结构的层次结构,请使用
    mkdirs

     new File("/path/directory").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!");
                }
            }
    
        }
    }
    
    使用Java7,您可以使用

    例如:

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

    这是我工作的方式,只需执行一个或多个目录: 需要导入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");  }
    
    对于java 7及以上版本:

    Path path = Paths.get("/your/path/string");
    Files.createDirectories(path);
    
    在创建之前,似乎没有必要检查目录或文件是否存在:

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

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


    要在java中创建目录/文件夹,我们有两种方法

    在这里,makedirectory方法创建单个目录(如果它不存在)

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

    这里makedirectories方法将创建文件对象表示的路径中缺少的所有目录

    例如,请参考下面的链接(解释得很好)。希望它有帮助!!

    如果您想确保其已创建,请执行以下操作:

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

    mkDir()
    仅当
    mkDir()创建时返回true。
    如果dir存在,则返回false,因此要验证您创建的dir,只需调用
    exists()
    If
    mkDir()
    returnfalse


    assertThat()
    将检查结果,如果
    存在则会失败()
    返回false。ofc您可以使用其他方法来处理未创建的目录。

    -1:创建目录实际上是一种非常糟糕的技术。对FS的访问权不是保留给专用资源的。Between
    if(!theDir.exists())
    dir.mkdir()
    状态可能已更改,并且在未创建目录之间可能会更改(因为
    存在
    返回
    true
    )并且需要它。
    方法的结果存在
    决不能用来决定是否创建目录。只要调用
    mkdir
    ,如果它已经存在,则不会引发异常。@mwhs我知道最好不要检查目录,但我不理解您的理由(第二部分)。调用
    mkdir
    和需要目录之间的状态不能改变吗?我想你的意思是其他进程删除了目录。@eposodex目录是共享资源。只是不要使用上面的解决方案,因为不同的原因是错误的。不清楚PO怎么会认为这是正确的答案。如果你关于IO资源的ant断言您需要使用锁,而不是布尔值。@mhws我知道这篇文章已经发布了几个月了,但是如果您从源代码中查看
    mkdirs
    实现,首先调用的是
    if(exists()){return false;}
    。实现本身首先检查目录是否已经存在,因此这个答案的唯一错误可能是检查条件2x。没有你想象的那么糟糕。从Java 7开始,你可能应该使用
    文件中的方法,就像Benoit Blanchon最近的回答一样。(这个答案似乎是在Java7之前编写的。)比OP选择的正确答案要好得多。在创建目录之前检查目录是否存在应该成为一种众所周知的反模式。如果目录已经存在怎么办?它将进行覆盖?或者跳过该过程。@AvinashRaj请检查是否清楚:
    如果且仅当目录为c时返回:true已创建,以及所有必需的父目录;否则为false
    它不会覆盖现有目录。它将返回false。请
    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");
        }
    }
    
    new File("C:\\Directory1").mkdir();