"Å, Rishi! Hei!"

"Hei, Amigo! Hvordan er livet?"

"Flott. Bilaabo har nettopp fortalt meg en haug med interessante ting om File, og hvordan jeg kan jobbe med det."

"Som det skjer, tror jeg at jeg har noe å legge til om dette emnet."

"Virkelig? Da er jeg helt i ørene."

"Ok, hør på. Java er i konstant utvikling. Utviklerne leter stadig etter nye måter å gjøre forskjellige ting mer effektivt på. I Java 7 la de til et alternativ til File-klassen."

Filer, bane - 1

"Alternativ?"

"Jepp. De tok File- klassen som grunnlag, la til noen nye ting, ga nytt navn til metodene og delte den også i to. Så nå er det to nye klassen: Path og FilesPath er faktisk den nye analogen til filen klasse, og File er en verktøyklasse (analog med Arrays og Collections-klassene). Alle de statiske metodene til File-klassen går dit. Å gjøre det på denne måten er "mer korrekt" når det gjelder OOP."

"Vel, hvis det er i form av OOP, så greit. Så hva endret seg?"

"Først bestemte de seg for ikke å reprodusere metodene som returnerte  String-  og File- objekter. I Path-  klassen returnerer alle metoder en Path .

"For det andre flyttet de mange statiske verktøymetoder inn i Files- klassen."

"For det tredje ble det mer praktisk å jobbe med relative veier."

"Her er en liste over metodene:"

Metoder i Path-klassen Beskrivelse
boolean isAbsolute() Returnerer sann hvis banen er absolutt.
Path getRoot() Returnerer roten til gjeldende bane, dvs. den øverste katalogen.
Path getFileName() Returnerer filnavnet fra gjeldende bane.
Path getParent() Returnerer katalogen fra gjeldende bane.
boolean startsWith(Path other) Sjekker om den gjeldende banen begynner med den passerte banen.
boolean endsWith(Path other) Sjekker om den gjeldende banen slutter med den passerte banen.
Path normalize() Normaliserer gjeldende bane. Konverterer for eksempel «c:/dir/dir2/../a.txt» til «c:/dir/a.txt»
Path relativize(Path other) Beregner den relative banen til to baner, dvs. «forskjellen mellom banene»
Path resolve(String other) Løser en absolutt bane ved å bruke gjeldende og relative bane.
URI toUri() Returnerer URI hvis gjeldende bane/fil.
Path toAbsolutePath() Konverterer banen til en absolutt bane hvis den er relativ.
File toFile() Returnerer et filobjekt som tilsvarer det gjeldende baneobjektet.

"Og den nåværende banen - hva er det?"

"Dette er banen som ble sendt til konstruktøren av Path-objektet hvis metoder blir kalt."

"OK. Så hvilke metoder har Files -klassen?"

"Har du det travelt med å komme deg et sted? Jeg skal fortelle deg det nå. Her er de viktigste metodene:"

Metoder i klassen Filer Beskrivelse
Path createFile(…) Oppretter en fil på disken.
Path createDirectory(…) Oppretter en katalog.
Path createDirectories(…) Oppretter en katalog og alle dens underkataloger.
Path createTempFile(…) Oppretter en midlertidig fil.
Path createTempDirectory(…) Oppretter en midlertidig katalog.
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 banen en katalog?
boolean isRegularFile(Path) Er banen en fil?
long size(Path) Returnerer filstørrelsen.
boolean exists(Path) Finnes det et objekt med samme navn?
boolean notExists(Path) Finnes det ikke et objekt med samme navn?
long copy(InputStream, OutputStream) Kopierer byte fra InputStream til OutputStream.
long copy(Path, OutputStream) Kopierer alle byte fra banen til OutputStream.
long copy(InputStream, Path) Kopierer alle byte fra InputStream til banen.
byte[] read(InputStream, int initialSize) Leser en rekke byte fra InputStream.
byte[] readAllBytes(Path path) Leser alle byte fra InputStream.
List<String> readAllLines(Path path,..) Leser tekstfilen og returnerer en liste med strenger.
Path write(Path path, byte[] bytes,…) Skriver en rekke byte til en fil.

"Så interessant! Så mange kule funksjoner, og alle på samme sted."

"Vel se. Anta at du vil laste ned en fil fra Internett, og deretter sende den til noen. For å gjøre dette er det veldig praktisk å lage en midlertidig fil på disken og lagre de leste dataene til den."

"Er det vanskelig å laste ned en fil fra Internett?"

"Det er veldig enkelt. Se på dette eksemplet:"

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, hva hadde du forventet å se? Det er bare 4 linjer."

" Linje 1.  Oppretter et URL-objekt som URL-en til bildefilen sendes til.

" Linje 2.  En strøm for å lese en fil (InputStream) åpnes på url-objektet.

" Linje 3.  Metoden createTempFilebrukes til å lage en midlertidig fil.

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

"Genialt!"

"Flott. Jeg er glad du liker det. Jeg tror du kan finne ut resten av metodene selv. Og jeg skal be Diego gi deg flere oppgaver om dem."

"Forresten, her er en god link til dette materialet"