如何在Java中创建目录?

如何创建目录/文件夹?

一旦我测试了System.getProperty("user.home");

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

725730 次浏览
new File("/path/directory").mkdirs();

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

7年后,我将把它更新为Bozho所建议的更好的方法。

File theDir = new File("/path/directory");
if (!theDir.exists()){
theDir.mkdirs();
}

下面的方法应该做你想做的事情,只要确保你检查的是mkdir () / mkdir ()的返回值

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

你可以试试FileUtils # forceMkdir

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

这个图书馆有很多有用的函数。

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


}
}
虽然这个问题已经有了答案。我想多放点东西,比如。 如果存在与您试图创建的目录名称相同的文件,则会提示错误。为将来的访客准备的。< / p >
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");
}
}
  1. 创建单个目录。

    new File("C:\\Directory1").mkdir();
    
  2. Create a directory named “Directory2 and all its sub-directories “Sub2″ and “Sub-Sub2″ together.

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

Source: this perfect tutorial , you find also an example of use.

只是想向每个调用File.mkdir()File.mkdirs()的人指出,要小心,File对象是一个目录而不是一个文件。例如,如果你为路径/dir1/dir2/file.txt调用mkdirs(),它将创建一个名为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!");
}
}


}
}

在Java 7中,你可以使用Files.createDirectories()

例如:

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

在创建from createDirectories javadocs之前检查目录或文件是否存在似乎是不必要的:

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

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

如果你想确保它被创建,那么:

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

assertThat()将检查结果,如果exists()返回false则失败。Ofc您可以使用其他东西来处理未创建的目录。