Как создать путь к несуществующему файлу

#java #path #nio

#java #путь #nio

Вопрос:

Как я могу создать Path файл, который гарантированно не существует?

Я думал об использовании «невозможного» имени пути, например:

 Path path = Path.of("/nonexistent");
 

Но кто-то может создать такой файл, что приведет к сбою моего кода.

Обновить

Я написал метод, который принимает Path , а затем пытается прочитать из базового файла, и теперь я пишу модульный тест, чтобы убедиться, что я правильно обработал несуществующие файлы.

Я хочу сделать свой модульный тест надежным, не рискуя случайными сбоями.

Комментарии:

1. Путь — это просто путь. Мы можем использовать Files::exists и/ или Files:notExists , чтобы проверить, существует ли файл в соответствии с данным Path .

2. Для полноты картины: каталог в этом контексте считается файлом.

3. Ваш вопрос неясен. Какова будет его цель? Будет ли это предшествовать операции записи? Пожалуйста, укажите некоторые варианты использования.

4. Если что-то является допустимым путем, нет гарантии, что оно не существовало в прошлом или не будет существовать в будущем. Единственное, что вы можете сделать, это проверить, не существует ли путь прямо сейчас. Чего вы пытаетесь достичь? Это звучит как проблема X-Y.

Ответ №1:

Создайте временный каталог для теста, тогда любой путь к файлу в этом каталоге не будет существовать — используйте это для своих тестов.

Ответ №2:

Я нашел возможное решение:

  1. Создайте новый временный файл.
  2. Немедленно удалите его.

Я бы не использовал это, если бы от этого зависела безопасность, но для целей тестирования я считаю, что это почти гарантирует, что файл не существует.

 Path path = Files.createTempFile(null, null);
Files.delete(path);
 

Комментарии:

1. Вы, конечно, могли бы добавить Assertions.assertTrue(Files.notExists(path)); перед своим вызовом, но я думаю, вы правы, предполагая, что это не нужно — как Files.delete должно вызывать исключение, если не удается удалить временный файл.