Gibt es für neue Anwendungen, die in Java 7 geschrieben wurden, einen Grund mehr, ein java.io.File
Objekt zu verwenden, oder können wir es als veraltet betrachten?
Ich glaube, dass java.nio.file.Path
man alles kann, was man java.io.File
kann und mehr.
File
anstelle von verwendetPath
?Path
kann einfacher geändert werden, um "Kinder hinzuzufügen" mitresolve(...)
oder "eine Ebene nach oben zu bewegen"getParent()
usw., wohingegenFile
dies nicht möglich ist. Wenn Sie den Pfad nach Abschluss geändert haben, konvertieren SietoFile()
ihn häufig, damit er in ältere Methoden wie einenFileInputStream
Konstruktor gesendet werden kann .Nein, Sie können es nicht als veraltet betrachten, es sei denn und bis es im
File
Javadoc so markiert ist .quelle
java.io.File
wird weder entfernt noch veraltet, und es gibt immer noch nichts im Javadoc, was darauf hindeutet, dass eines dieser Dinge jemals passieren wird.Weitere Informationen finden Sie in diesem Artikel unter http://www.oracle.com/technetwork/articles/javase/nio-139333.html
Grundsätzlich wird file.Path von nun an der richtige Weg sein, aber wie allgemein bekannt ist, neigen Java-Leute dazu, die Rückkompatibilität beizubehalten. Ich denke, deshalb haben sie es verlassen.
quelle
Ich werde die sehr gute Antwort von vervollständigen
@mmcrae
.JDK-Klassen werden sehr selten veraltet.
In der Liste der veralteten JDK 8-APIs werden alle Klassen angezeigt, die seit dem ersten JDK veraltet sind.
Es enthält nur einen kleinen Teil der Klassen, von deren Verwendung die Oracle-Dokumentation und die Java-Community abraten.
java.util.Date
,java.util.Vector
,java.util.Hashtable
... , das sind Klassen mit so vielen Mängel nicht veraltet sind.Aber wieso ?
Denn konzeptionell gibt es noch etwas von
deprecated
Mitteln, aber es wird davon abgeraten, es zu verwenden, da es mit ziemlicher Sicherheit entfernt wird.Tausende Programme verlassen sich auf diese schlecht gestalteten Klassen.
Für solche Klassen geben Java-API-Entwickler kein solches Signal.
Antwort von
@EJP
ist so wirklich richtig:Ich denke also, dass Ihre Frage in ihren Begriffen sinnvoller wäre:
"Wenn wir die Wahl haben, sollten wir sie verwenden
java.io.File
oderjava.nio.file.Path
für neue Entwicklungen, und wenn die Antwort lautetjava.nio.file.Path
, könnten Sie siejava.io.File
für ältere Projekte leicht nutzenjava.io.File
?"Du hast die Antwort.
Dieses Orakel-Tutorial über Legacy-E / A bestätigt Ihr Denken.
Bei so vielen Nachteilen
java.io.File
brauchen wir wirklich keinen Grund, diese Klasse für neue Entwicklungen zu verwenden.Und selbst für die Verwendung von Legacy-Code
java.io.File
gibt Oracle Hinweise zur VerwendungPath
.quelle
Ja, aber viele vorhandene APIs, einschließlich der Java7-eigenen Standard-APIs, funktionieren immer noch nur mit
File
Typ.quelle
Java.io.File ist nicht veraltet. Ja, java.nio.file.Path ist besser, aber solange es noch viele Programme und Lehrbücher gibt, die Java.io.File verwenden, sollte es nicht als veraltet angesehen werden, es ist zu wichtig. Dies würde nur bedeuten, einen Schraubenschlüssel in die Werke zu werfen, um nicht den ganzen Gewinn zu erzielen. Zum Beispiel verwendet das Android-Framework Datei für einige seiner grundlegenden Funktionen zur Dateiverwaltung, viele andere Dinge tun dies.
quelle
Path
es besser sei. Er fragte, obFile
veraltet sei.Das ist ein bisschen wie zu sagen: "Sollte Napoleon in Russland einmarschieren, oder sind diese Rosenkohl wirklich lecker?"
Der zweite Teil der Frage kann in der Tat als veraltet angesehen werden. Ab Januar 2018 ist es nicht veraltet. Aber nichts hindert Sie daran , es so zu betrachten. Ob das Ihnen in diesem oder im nächsten Leben einen Vorteil verschafft, kann man nicht sagen.
quelle
File
. Soll ich, ja oder nein?"File
sowieso noch verwendet werden. Es wird nicht so schnell sterben.it isn't deprecated. But there's nothing to stop you *considering* it so
LOL.