#java
#java
Вопрос:
File.getName
и Path.getFileName
оба возвращают имя файла без каталога. В чем разница между ними? Если они делают то же самое, что более идиоматично? Последнее было введено позже; означает ли это, что оно обладает улучшенной функциональностью или в настоящее время считается более идиоматичным?
Комментарии:
1. В дополнение к приведенному ниже ответу @aran важно отметить, что
java.nio.file.Path
в целом это более идиоматично, чемjava.io.File
со времен Java SE 7. Oracle считает последний «устаревшим» кодом, и они предоставляют комментарии о том, как переходитьjava.io.File
от использования кjava.nio.file.Path
использованию ( docs.oracle.com/javase/tutorial/essential/io/legacy.html )
Ответ №1:
Возвращаемый тип является одним из различий здесь.
File.getName()
—String
Path.getFileName()
—Path
Я предполагаю, что вы говорите о String
выходе, который возвращает каждый из них (например, при вызове System.out
их); В отношении этого их логика точно такая же: возвращайте значение, которое находится после последнего найденного разделителя.
Единственное реальное различие, о котором я мог подумать, — это вывод каждого из них, если указанное местоположение файла пустое / не существует. В то время File.getName()
как вернет пустое, но инициализированное String
, Path.getFilename()
вернется null
.
Например, при попытке получить доступ к файлу из пустого местоположения это происходит System.out
при их вызове (обратите внимание на пустую строку перед null
):
1. File.getName()
- пустой
String
2. Path.getFilename()
null