48

我正在尝试使用方法将一些文本写入文件Files.write()

byte[] contents = project.getCode().getBytes(StandardCharsets.UTF_8);

try {
    Files.write(project.getFilePath(), contents, StandardOpenOption.CREATE);
} catch (IOException ex) {
    ex.printStackTrace();
    return;
}

根据 API,如果文件不存在,则会创建并写入该文件。

但是,我明白了:

java.nio.file.NoSuchFileException: C:\Users\Administrator\Desktop\work\Default.txt
    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
    at java.nio.file.spi.FileSystemProvider.newOutputStream(Unknown Source)
    at java.nio.file.Files.newOutputStream(Unknown Source)
    at java.nio.file.Files.write(Unknown Source)

我错过了什么吗?

4

2 回答 2

69

您应该能够创建文件,但不能创建目录。您可能需要先检查目录是否C:\Users\Administrator\Desktop\work存在。

你可以做

Path parentDir = project.getFilePath().getParent();
if (!Files.exists(parentDir))
    Files.createDirectories(parentDir);
于 2013-01-10T17:28:44.913 回答
2

如果使用默认的 OpenOptions 参数,将写入该文件。如果指定 CREATE,则不会使用默认参数,而是仅使用 CREATE。尝试在 CREATE 之外添加 WRITE,或者将该参数留空

于 2013-01-10T17:32:57.227 回答