我正在尝试使用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)
我错过了什么吗?
答案 0 :(得分:48)
您应该能够创建文件,但无法创建目录。您可能需要先检查目录C:\Users\Administrator\Desktop\work
是否存在。
你可以做到
Path parentDir = project.getFilePath().getParent();
if (!Files.exists(parentDir))
Files.createDirectories(parentDir);
答案 1 :(得分:2)
如果使用默认的OpenOptions参数,将写入文件。如果指定CREATE,则不使用默认参数,但仅使用CREATE。除了CREATE之外,尝试添加WRITE,或者将该参数留空