Проверьте, существует ли файл с определенным суффиксом, используя nio2

Дано: файл с именем example.xml Цель: проверить, есть ли файл example.xml.sha256 существует.

Какой самый элегантный / эффективный способ сделать это в Java 7+ (nio2, поэтому с помощью java.nio.files)?

У меня есть это, но это выглядит немного уродливо для меня:

Path path = Paths.get("/../example.xml");
if (Files.exists(Paths.get(path.toString() + ".sha256")))) {
   ...
}

1 ответ

Решение

Было бы немного чище использовать .resolveSibling() например,

path.resolveSibling(path.getFileName() + ".sha256");

Это не намного лучше, чем ваше решение, но у него есть несколько преимуществ:

  1. Отношения между этими двумя файлами четко задокументированы в коде - они одноуровневые и имеют одинаковый префикс имени файла.
  2. Это использует особенности Path - если вы просто собираетесь выполнять прямую конкатенацию строк, вы можете не использовать Path совсем.
  3. Избегает Paths.get(), который является неоптимальным способом работы с Path s (потому что это предполагает файловую систему по умолчанию). Когда у вас есть Path Вам не нужно повторно звонить Paths.get(),
Другие вопросы по тегам