"Åh, Rishi! Hej!"

"Hej, Amigo! Hvordan er livet?"

"Fantastisk. Bilaabo har lige fortalt mig en masse interessante ting om File, og hvordan man arbejder med det."

"Som det sker, tror jeg, at jeg har noget at tilføje om dette emne."

"Virkelig? Så er jeg alle ører."

"Okay, hør efter. Java udvikler sig konstant. Dets udviklere leder konstant efter nye måder at gøre forskellige ting mere effektivt på. I Java 7 tilføjede de et alternativ til File-klassen."

Filer, sti - 1

"Alternativ?"

"Jep. De tog File- klassen som grundlag, tilføjede nogle nye ting, omdøbte metoderne og delte den så også op i to. Så nu er der to nye klasser: Path og FilesPath er faktisk den nye analog af File'en. klasse, og File er en hjælpeklasse (analog med klasserne Arrays og Collections). Alle de statiske metoder i File-klassen går dertil. At gøre det på denne måde er 'mere korrekt' med hensyn til OOP."

"Nå, hvis det er i form af OOP, så okay. Så hvad ændrede sig?"

"Først besluttede de ikke at reproducere de metoder, der returnerede  String-  og File- objekter. I Path-  klassen returnerer alle metoder en Path .

"For det andet flyttede de en masse statiske hjælpemetoder ind i klassen Filer ."

"For det tredje blev det mere bekvemt at arbejde med relative stier."

"Her er en liste over metoderne:"

Metoder i klassen Path Beskrivelse
boolean isAbsolute() Returnerer sand, hvis stien er absolut.
Path getRoot() Returnerer roden af ​​den aktuelle sti, dvs. den øverste mappe.
Path getFileName() Returnerer filnavnet fra den aktuelle sti.
Path getParent() Returnerer biblioteket fra den aktuelle sti.
boolean startsWith(Path other) Kontrollerer, om den aktuelle sti begynder med den passerede sti.
boolean endsWith(Path other) Kontrollerer, om den aktuelle sti ender med den passerede sti.
Path normalize() Normaliserer den aktuelle sti. Konverterer f.eks. «c:/dir/dir2/../a.txt» til «c:/dir/a.txt»
Path relativize(Path other) Beregner den relative sti af to stier, dvs. «forskellen mellem stierne»
Path resolve(String other) Løser en absolut sti ved hjælp af den aktuelle og relative sti.
URI toUri() Returnerer URI'en, hvis den aktuelle sti/fil.
Path toAbsolutePath() Konverterer stien til en absolut sti, hvis den er relativ.
File toFile() Returnerer et Fil-objekt, der svarer til det aktuelle Sti-objekt.

"Og den nuværende vej - hvad er det?"

"Dette er stien, der blev videregivet til konstruktøren af ​​Path-objektet, hvis metoder bliver kaldt."

"OK. Så hvilke metoder har klassen Filer ?"

"Har du travlt med at komme et sted hen? Jeg fortæller dig lige nu. Her er de vigtigste metoder:"

Metoder i klassen Filer Beskrivelse
Path createFile(…) Opretter en fil på disken.
Path createDirectory(…) Opretter en mappe.
Path createDirectories(…) Opretter en mappe og alle dens undermapper.
Path createTempFile(…) Opretter en midlertidig fil.
Path createTempDirectory(…) Opretter en midlertidig mappe.
void delete(Path path) Sletter en fil.
Path copy(Path source, Path target,…) Kopierer en fil.
Path move(Path source, Path target,…) Flytter en fil.
boolean isSameFile(Path, Path) Sammenligner to filer.
boolean isDirectory(Path) Er stien en mappe?
boolean isRegularFile(Path) Er stien en fil?
long size(Path) Returnerer filstørrelsen.
boolean exists(Path) Findes der et objekt med samme navn?
boolean notExists(Path) Findes et objekt med samme navn ikke?
long copy(InputStream, OutputStream) Kopierer bytes fra InputStream til OutputStream.
long copy(Path, OutputStream) Kopierer alle bytes fra stien til OutputStream.
long copy(InputStream, Path) Kopierer alle bytes fra InputStream til Stien.
byte[] read(InputStream, int initialSize) Læser et array af bytes fra InputStream.
byte[] readAllBytes(Path path) Læser alle bytes fra InputStream.
List<String> readAllLines(Path path,..) Læser tekstfilen og returnerer en liste over strenge.
Path write(Path path, byte[] bytes,…) Skriver et array af bytes til en fil.

"Hvor interessant! Så mange fede funktioner, og alle på samme sted."

"Nå se. Antag, at du vil downloade en fil fra internettet og derefter sende den til nogen. For at gøre dette er det meget praktisk at oprette en midlertidig fil på disken og gemme de læste data til den."

"Er det svært at downloade en fil fra internettet?"

"Det er meget enkelt. Se på dette eksempel:"

Kode
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();

Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);

"Og det er det?"

"Ja, hvad havde du forventet at se? Der er kun 4 streger."

" Linje 1.  Opretter et URL-objekt, som billedfilens URL sendes til.

" Linje 2.  En strøm til læsning af en fil (InputStream) åbnes på url-objektet.

" Linje 3.  Metoden createTempFilebruges til at oprette en midlertidig fil.

" Linje 4.  Files.copy-metoden kopierer data fra  inputStream til tempFile. Det er det."

"Genialt!"

"Fint. Jeg er glad for, at du kan lide det. Jeg tror, ​​du selv kan finde ud af resten af ​​metoderne. Og jeg vil bede Diego om at give dig flere opgaver om dem."

"Her er i øvrigt et godt link til dette materiale"