Java >> Java tutorial >  >> Tag >> java.io

java.io.File vs java.nio.Files, som er den foretrukne i ny kode?

Den dokumentation, du linkede til, giver svaret:

Pakken java.nio.file definerer grænseflader og klasser til Javavirtual-maskinen for at få adgang til filer, filattributter og filsystemer. Denne API kan bruges til at overvinde mange af begrænsningerne i klassen java.io.File. ToPath-metoden kan bruges til at opnå en sti, der bruger den abstrakte sti repræsenteret af et File-objekt til at finde en fil. Den resulterende sti kan bruges sammen med klassen Filer for at give mere effektiv og omfattende adgang til yderligere filhandlinger, filattributter og I/O-undtagelser for at hjælpe med at diagnosticere fejl, når en operation på en fil mislykkes.


File har en nyere implementering:Path . Med en builder Paths.get("...") . Og Files har mange gode hjælpefunktioner med bedre implementeringer også (move i stedet for den nogle gange fejlende File.renameTo ).

En Path vedligeholder sit filsystem. Derfor kan du kopiere en sti ud af et zip-filsystem ("jar:file:..... .zip") til et andet filsystem og omvendt.

File.toPath() kan hjælpe med en gradvis overgang.

Værktøjerne alene i Files gøre et skift til de nyere klasser rentabelt.


Jeg vil sige, at ingen af ​​dem er "foretrukket". I stedet vil jeg anbefale, at du ser på den funktionalitet din applikation kræver og bruger hvilken af ​​java.io.File eller java.nio.Files opfylder kravene bedre.

Svaret er sandsynligvis enten uafgjort eller java.nio.Files er bedre. Men det er op til dig eller dit team at bestemme, ikke en anden programmør på SO.

Er dette et aktivt argument i Java-fællesskabet?

Der er nogle mennesker, der vil skændes om alt. Men jeg vil sige, at samfundet (generelt) har vigtigere bekymringer.


Java tag