Для новых приложений, написанных на Java 7, есть ли какая-либо причина использовать java.io.File
объект больше или мы можем считать его устаревшим?
Я верю, что java.nio.file.Path
может сделать все, что java.io.File
может сделать и даже больше.
Для новых приложений, написанных на Java 7, есть ли какая-либо причина использовать java.io.File
объект больше или мы можем считать его устаревшим?
Я верю, что java.nio.file.Path
может сделать все, что java.io.File
может сделать и даже больше.
Короче говоря:
java.io.File
Скорее всего, никогда не будет осуждается / не поддерживается. Тем не менее, java.nio.file.Path
является частью более современной java.nio.file
библиотеки и делает все java.io.File
возможное, но в целом лучше и больше.
Для новых проектов используйте Path
.
И если вам когда-либо понадобится File
объект для наследства, просто вызовите Path # toFile ()
Миграция из файла в путь
File
вместоPath
?Path
может быть более легко изменен, чтобы «добавить детей» сresolve(...)
или «подняться на один уровень» сgetParent()
, и т. д., тогда какFile
не может. По сути, когда вы закончите модифицировать Path, вы будете часто конвертировать его,toFile()
чтобы его можно было отправлять в устаревшие методы, такие какFileInputStream
конструктор.Нет, вы не можете считать его устаревшим, если только он не помечен в
File
Javadoc.источник
java.io.File
она до сих пор не удалена и даже не устарела, и в Javadoc все еще нет никаких указаний на то, что что-либо из этого когда-либо случится.Проверьте эту статью для получения дополнительной информации - http://www.oracle.com/technetwork/articles/javase/nio-139333.html
По сути, file.Path будет способом идти дальше, но, как широко известно, Java-люди склонны сохранять обратную совместимость, поэтому я думаю, именно поэтому они оставили это.
источник
Я завершу очень хороший ответ
@mmcrae
.Классы JDK очень редко осуждаются.
Вы можете увидеть в списке устаревших API JDK 8 все классы, которые устарели с момента первого выпуска JDK.
Он содержит лишь небольшую часть классов, которые не рекомендуется использовать в документации Oracle и сообществе Java.
java.util.Date
,java.util.Vector
,java.util.Hashtable
... , что классы с таким количеством дефектов не рекомендуется.Но почему ?
Потому что концептуально что-то из
deprecated
средств все еще существует, но не рекомендуется использовать, поскольку это, безусловно, будет удалено.Тысячи программ полагаются на эти плохо разработанные классы.
Для таких классов разработчики Java API не подадут такой сигнал.
Ответ
@EJP
настолько правдив:Итак, я думаю, что ваш вопрос будет иметь больше смысла в терминах:
«Поскольку у нас есть выбор, следует ли нам использовать
java.io.File
илиjava.nio.file.Path
для новых разработок, и если ответ будетjava.nio.file.Path
, вы могли бы легко воспользоваться преимуществамиjava.io.File
для использования устаревших проектовjava.io.File
?»У вас есть ответ.
Этот урок оракула о устаревших IO подтверждает ваше мышление.
Имея так много недостатков
java.io.File
, нам не нужно оснований использовать этот класс для новых разработок.И даже для использования устаревшего кода
java.io.File
Oracle дает советы по использованиюPath
.источник
Да, но многие существующие API, включая собственные стандартные API Java7, все еще работают только с
File
типом.источник
Java.io.File не является устаревшим. Да, java.nio.file.Path лучше, но пока есть много программ и учебников, использующих Java.io.File, хотя бы по устаревшим причинам, его не следует считать устаревшим, это слишком важно. Это просто бросило бы гаечный ключ в работу без всякой выгоды. Например, платформа Android использует File для некоторых из своих основных функций обработки файлов, многие другие вещи делают.
источник
Path
было ли лучше. Он спросил,File
не устарел ли .Это немного похоже на высказывание: «должен ли Наполеон вторгаться в Россию или эти брюссельские капусты действительно вкусные?»
Что касается второй части вопроса, вы действительно можете считать ее устаревшей. По состоянию на январь 2018 года он не является устаревшим. Но ничто не мешает вам считать это так. Невозможно сказать, принесет ли это вам какое-либо преимущество в этой жизни или в следующей.
источник
File
. Должен ли я, да или нет?»File
. Это не умрет в ближайшее время.it isn't deprecated. But there's nothing to stop you *considering* it so
РЖУНИМАГУ.