Java-файл.написать исключение 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:UsersAdministratorDesktopworkDefault.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)

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

2 ответов


вы должны иметь возможность создать файл, но вы не можете создать каталог. Возможно, Вам потребуется проверить каталог первый.

можно сделать

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

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