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 に答える