Подтвердить что ты не робот

Java Files.write NoSuchFileException

Я пытаюсь записать текст в файл с помощью метода 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)

Я что-то пропустил?

4b9b3361

Ответ 1

Вы должны иметь возможность создать файл, но вы не можете создать каталог. Возможно, вам сначала необходимо проверить каталог C:\Users\Administrator\Desktop\work.

Вы можете сделать

Path parentDir = project.getFilePath().getParent();
if (!Files.exists(parentDir))
    Files.createDirectories(parentDir);

Ответ 2

Файл будет записан, если используется параметр OpenOptions по умолчанию. Если вы укажете CREATE, параметры по умолчанию не будут использоваться, но используются только CREATE. Попробуйте добавить WRITE в дополнение к CREATE или просто оставьте этот параметр пустым