Czy w przypadku nowych aplikacji napisanych w Javie 7 istnieje jakikolwiek powód do używania java.io.File
obiektu, czy możemy uznać go za przestarzały?
Wierzę, że java.nio.file.Path
można zrobić wszystko, co java.io.File
można zrobić i więcej.
Czy w przypadku nowych aplikacji napisanych w Javie 7 istnieje jakikolwiek powód do używania java.io.File
obiektu, czy możemy uznać go za przestarzały?
Wierzę, że java.nio.file.Path
można zrobić wszystko, co java.io.File
można zrobić i więcej.
Krótko mówiąc:
java.io.File
najprawdopodobniej nigdy nie będzie przestarzałe / nieobsługiwane. To powiedziawszy, java.nio.file.Path
jest częścią bardziej nowoczesnego java.nio.file
lib i robi wszystko java.io.File
, ale ogólnie lepiej i wiele więcej.
W przypadku nowych projektów użyj Path
.
A jeśli kiedykolwiek potrzebujesz File
obiektu dla starszej wersji, po prostu wywołaj Path # toFile ()
Migracja z pliku do ścieżki
Artykuł Janice J. Heiss i Sharon Zakhour, maj 2009, omawiający system plików NIO.2 w JDK 7
File
zamiastPath
?Path
można łatwiej modyfikować, aby „dodawać dzieci” za pomocąresolve(...)
lub „przechodzić o jeden poziom wyżej” za pomocągetParent()
itp., podczas gdyFile
nie można. Zasadniczo po zakończeniu modyfikacji Ścieżki często ją przekonwertujesz,toFile()
aby można ją było wysłać na starsze metody, takie jakFileInputStream
konstruktor.Nie, nie możesz uważać go za przestarzały, dopóki nie zostanie zaznaczony w
File
Javadoc.źródło
java.io.File
nadal nie jest ani usuwana, ani przestarzała, a Javadoc nie zawiera niczego, co sugerowałoby, że któraś z tych rzeczy się wydarzy.Sprawdź ten artykuł, aby uzyskać więcej informacji - http://www.oracle.com/technetwork/articles/javase/nio-139333.html
Zasadniczo file.Path będzie odtąd drogą, ale jak powszechnie wiadomo, ludzie Java mają tendencję do zachowania kompatybilności wstecznej, więc sądzę, że właśnie dlatego ją zostawili.
źródło
Wypełnię bardzo dobrą odpowiedź
@mmcrae
.Klasy JDK są bardzo rzadko przestarzałe.
Możesz zobaczyć na liście przestarzałych JDK 8 API wszystkie klasy przestarzałe od pierwszego JDK.
Zawiera tylko niewielką część klas, których odradza dokumentacja Oracle i społeczność Java.
java.util.Date
,java.util.Vector
,java.util.Hashtable
... że są zajęcia z tak wielu wad nie są przestarzałe.Ale dlaczego ?
Ponieważ koncepcyjnie coś
deprecated
tam oznacza, ale zniechęca do używania, ponieważ z pewnością zostanie usunięty.Tysiące programów polegają na tych źle zaprojektowanych klasach.
W przypadku takich klas programiści Java API nie dadzą takiego sygnału.
Odpowiedź
@EJP
jest naprawdę słuszna:Tak, myślę, że pytanie to więcej sensu w jego słowach:
„Jak mamy wyboru, musimy użyć
java.io.File
albojava.nio.file.Path
do nowych sytuacji i jeśli odpowiedź brzmijava.nio.file.Path
, można łatwo wykorzystaćjava.io.File
do projektów przy użyciu starszychjava.io.File
?”Masz odpowiedź.
Ten samouczek wyroczni na temat starszych IO potwierdza twoje myślenie.
Przy tak wielu wadach
java.io.File
, tak naprawdę nie potrzebujemy powodu, aby używać tej klasy do nowych prac.Nawet w przypadku użycia starszego kodu
java.io.File
Oracle daje wskazówki do użyciaPath
.źródło
Tak, ale wiele istniejących interfejsów API, w tym standardowe interfejsy API Java7, nadal działa tylko z
File
typem.źródło
Plik Java.io.File nie jest przestarzały. Tak, java.nio.file.Path jest lepszy, ale dopóki jest mnóstwo programów i podręczników korzystających z Java.io.File, choćby ze względów starszych, nie należy go uważać za przestarzały, jest zbyt ważny. Takie postępowanie byłoby po prostu rzuceniem klucza w dzieło bez żadnego zysku. Na przykład struktura systemu Android używa pliku do niektórych podstawowych funkcji obsługi plików, wiele innych rzeczy robi.
źródło
Path
jest lepiej. Zapytał, czyFile
jest przestarzały.To trochę jak powiedzenie: „czy Napoleon powinien najechać Rosję, czy te brukselki naprawdę są smaczne?”
Co do drugiej części pytania, można rzeczywiście uznać je za przestarzałe. Od stycznia 2018 r. Nie jest przestarzałe. Ale nic nie stoi na przeszkodzie, abyś to rozważył . Nie da się powiedzieć, czy zapewni ci to jakąś przewagę w tym życiu, czy w następnym.
źródło
File
. Czy powinienem, tak czy nie?”File
. W najbliższym czasie nie umrze.it isn't deprecated. But there's nothing to stop you *considering* it so
LOL.