如何创建目录/文件夹?
一旦我测试了System.getProperty("user.home");
我必须创建一个目录(目录名“新文件夹”)当且仅当新文件夹不存在时。
如何创建目录/文件夹?
一旦我测试了System.getProperty("user.home");
我必须创建一个目录(目录名“新文件夹”)当且仅当新文件夹不存在时。
当前回答
这是java的一个吸引力,使用短路或'||',测试目录的存在,并为您制作目录
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的第一部分为真,它不会运行第二部分,如果第一部分为假,它也会运行第二部分
其他回答
您可以尝试FileUtils#forceMkdir
FileUtils.forceMkdir("/path/directory");
这个库有很多有用的函数。
这是java的一个吸引力,使用短路或'||',测试目录的存在,并为您制作目录
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的第一部分为真,它不会运行第二部分,如果第一部分为假,它也会运行第二部分
如果你想确保它被创建,那么:
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您可以使用其他东西来处理未创建的目录。
下面的方法可以做你想做的事情,只要确保你检查了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();
}
}
Mkdir vs mkdirs
如果要创建单个目录,请使用mkdir
new File("/path/directory").mkdir();
如果想要创建文件夹结构的层次结构,请使用mkdirs
new File("/path/directory").mkdirs();