写入新文件时自动创建整个路径

232 java directory path filewriter

我想写一个新的文件FileWriter.我这样使用它:

FileWriter newJsp = new FileWriter("C:\\user\Desktop\dir1\dir2\filename.txt");
Run Code Online (Sandbox Code Playgroud)

现在dir1dir2目前都不存在.我希望Java自动创建它们,如果它们还没有存在的话.实际上Java应该设置整个文件路径(如果尚未存在).

我怎样才能做到这一点?

Jon*_*eet 410

就像是:

File file = new File("C:\\user\\Desktop\\dir1\\dir2\\filename.txt");
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);
Run Code Online (Sandbox Code Playgroud)

  • @sauperl:因为那会创建一个名为`filename.txt`的*目录*... (51认同)
  • 为什么getParentFile而不仅仅是mkdirs? (8认同)
  • @sauperl:如果该文件尚不存在, _mkdirs()_ 将假定指定的所有内容都是一个目录并按此创建它(刚刚测试过)。通过使用 _getParentFile()_,您可以将文件本身的创建工作留给 _FileWriter_。 (6认同)
  • @surajs1n:如果目录已经存在,`mkdirs`将不执行任何操作。 (2认同)

cdm*_*hai 135

从Java 1.7开始,您可以使用Files.createFile:

Path pathToFile = Paths.get("/home/joe/foo/bar/myFile.txt");
Files.createDirectories(pathToFile.getParent());
Files.createFile(pathToFile);
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要记住,相对路径可能会导致空指针异常.`path pathToFile = Paths.get("myFile.txt"); Files.createDirectories(pathToFile.getParent());` (4认同)

Arm*_*and 28

用途File.mkdirs():

File dir = new File("C:\\user\\Desktop\\dir1\\dir2");
dir.mkdirs();
File file = new File(dir, "filename.txt");
FileWriter newJsp = new FileWriter(file);
Run Code Online (Sandbox Code Playgroud)