如何在java中的目录中创建文件?

Uer*_*fer 147 java file-io

如果我想创建一个文件C:/a/b/test.txt,我可以这样做:

File f = new File("C:/a/b/test.txt");
Run Code Online (Sandbox Code Playgroud)

另外,我想FileOutputStream用来创建文件.那我该怎么办呢?由于某种原因,文件不会在正确的目录中创建.

RMT*_*RMT 233

最好的方法是:

String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);

f.getParentFile().mkdirs(); 
f.createNewFile();
Run Code Online (Sandbox Code Playgroud)

  • 不适用于Linux,因为在unix系统中没有"C:"这样的东西. (35认同)
  • 使用`new File("/ a/b/test.txt")`适用于两个系统.在Windows上,它将写入与JVM运行的磁盘相同的磁盘. (33认同)
  • `f.getParentFile()mkdirs(); f.createNewFile();` (6认同)

Bal*_*usC 48

您需要在写入之前确保父目录存在.你可以这样做File#mkdirs().

File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...
Run Code Online (Sandbox Code Playgroud)


小智 34

随着Java 7中,你可以使用Path,Paths以及Files:

import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class CreateFile {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/tmp/foo/bar.txt");

        Files.createDirectories(path.getParent());

        try {
            Files.createFile(path);
        } catch (FileAlreadyExistsException e) {
            System.err.println("already exists: " + e.getMessage());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*elo 11

使用:

File f = new File("C:\\a\\b\\test.txt");
f.mkdirs();
f.createNewFile();
Run Code Online (Sandbox Code Playgroud)

注意我在Windows文件系统中将正斜杠更改为双反斜杠.这将在给定路径上创建一个空文件.

  • 在 Windows 上,\\ 和 / 都是有效的。顺便说一句,当您使用“FileOutputStream”写入时,“createNewFile()”是不必要的。 (2认同)