如何创建目录/文件夹?
一旦我测试 System.getProperty("user.home");
当且仅当新文件夹不存在时,我才必须创建一个目录(目录名称为“ new folder”)。
mkdir
在Java中是幂等的。该实现将检查该目录是否为您存在,并且仅在不存在时创建它。
如何创建目录/文件夹?
一旦我测试 System.getProperty("user.home");
当且仅当新文件夹不存在时,我才必须创建一个目录(目录名称为“ new folder”)。
mkdir
在Java中是幂等的。该实现将检查该目录是否为您存在,并且仅在不存在时创建它。
Answers:
大约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");
}
}
if(!theDir.exists())
和之间theDir.mkdir()
的状态可能已更改,以及在未创建目录(由于exists
返回true
)和需要它之间的状态也可能发生变化。该方法的结果exists
绝不能用于决定是否创建目录。只需调用mkdir
,就不会引发任何异常(如果已经存在)。
mkdir
和需要目录之间更改吗?我假设您的意思是其他一些进程删除了该目录。
mkdirs
从源代码中看一下实现,首先要调用的是if (exists()) { return false; }
。实现本身首先检查该目录是否已存在,因此此答案唯一有问题的地方可能就是检查2x条件。远没有你想像的那么糟糕。
Files
Benoit Blanchon的最新答案中的方法。(此答案似乎是在Java 7之前编写的。)
new File("/path/directory").mkdirs();
“目录”是您要创建/存在的目录的名称。
what if the directory is already exists? It would do overwriting? or skip the process.
。
Returns: true if and only if the directory was created, along with all necessary parent directories; false otherwise
使用Java 7,您可以使用 Files.createDirectories()
。
例如:
Files.createDirectories(Paths.get("/path/to/directory"));
Unlike the createDirectory method, an exception is not thrown if the directory could not be created because it already exists
directory.toPath()
。
对于Java 7及更高版本:
Path path = Paths.get("/your/path/string");
Files.createDirectories(path);
似乎没有必要在createDirectories javadocs中创建目录或文件之前检查其是否存在:
通过首先创建所有不存在的父目录来创建目录。与createDirectory方法不同,如果由于目录已经存在而无法创建目录,则不会引发异常。attrs参数是可选的文件属性,用于在创建不存在的目录时自动进行设置。每个文件属性均由其名称标识。如果数组中包含多个同名属性,则将忽略除最后一次出现以外的所有属性。
如果此方法失败,则可以在创建一些而非全部父目录之后执行此操作。
下面的方法应该做您想要的,只是确保您正在检查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();
}
}
虽然已经回答了这个问题。我想添加一些额外的内容,即如果存在一个您要创建的目录名称的文件,它将提示错误。对于未来的访客。
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");
}
}
}
干净整洁:
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中创建目录/文件夹,我们有两种方法
如果不存在单个目录,此处的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/
通过这种方式,我可以执行一个或多个目录,也可以执行一个目录:需要导入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"); }
使用此功能可以在用户主目录上创建目录。
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");
}
}
如果要确定其创建,则此操作:
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()
返回一个布尔值,如果不使用该变量,findbug会为此哭泣。也不是很好...
mkDir()
mkDir()
创建后仅返回true 。如果该目录存在,则返回false,因此要验证您创建的目录,仅exists()
在mkDir()
返回false时调用。
assertThat()
将检查结果,如果exists()
返回false则失败。ofc您可以使用其他东西来处理未创建的目录。
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();
}
}
}