Проверьте, существует ли файл с определенным суффиксом, используя 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");
Это не намного лучше, чем ваше решение, но у него есть несколько преимуществ:
- Отношения между этими двумя файлами четко задокументированы в коде - они одноуровневые и имеют одинаковый префикс имени файла.
- Это использует особенности
Path
- если вы просто собираетесь выполнять прямую конкатенацию строк, вы можете не использоватьPath
совсем. - Избегает
Paths.get()
, который является неоптимальным способом работы сPath
s (потому что это предполагает файловую систему по умолчанию). Когда у вас естьPath
Вам не нужно повторно звонитьPaths.get()
,