"Åh, Rishi! Hej!"

"Hej, Amigo! Hur är livet?"

"Bra. Bilaabo har precis berättat för mig en massa intressanta saker om File och hur man arbetar med det."

"När det händer tror jag att jag har något att tillägga i detta ämne."

"Verkligen? Då är jag helt i öronen."

"Okej, lyssna. Java utvecklas ständigt. Dess utvecklare letar ständigt efter nya sätt att göra olika saker mer effektivt. I Java 7 lade de till ett alternativ till klassen File."

Filer, sökväg - 1

"Alternativ?"

"Japp. De tog File -klassen som bas, lade till lite nya saker, döpte om metoderna och delade sedan också upp den i två. Så nu finns det två nya klasser: Path och FilesPath är faktiskt den nya analogen till filen klass, och File är en verktygsklass (analog med klasserna Arrays och Collections). Alla de statiska metoderna i klassen File går dit. Att göra det på detta sätt är "mer korrekt" i termer av OOP."

"Tja, om det är i termer av OOP, då okej. Så vad förändrades?"

"Först bestämde de sig för att inte reproducera metoderna som returnerade  String-  och File -objekt. I klassen Path  returnerar alla metoder en Path .

"För det andra flyttade de många statiska verktygsmetoder till klassen Files ."

"För det tredje blev det bekvämare att arbeta med relativa vägar."

"Här är en lista över metoderna:"

Metoder i klassen Path Beskrivning
boolean isAbsolute() Returnerar sant om sökvägen är absolut.
Path getRoot() Returnerar roten till den aktuella sökvägen, dvs den översta katalogen.
Path getFileName() Returnerar filnamnet från den aktuella sökvägen.
Path getParent() Returnerar katalogen från den aktuella sökvägen.
boolean startsWith(Path other) Kontrollerar om den aktuella sökvägen börjar med den passerade sökvägen.
boolean endsWith(Path other) Kontrollerar om den aktuella vägen slutar med den passerade vägen.
Path normalize() Normaliserar den aktuella sökvägen. Konverterar till exempel «c:/dir/dir2/../a.txt» till «c:/dir/a.txt»
Path relativize(Path other) Beräknar den relativa vägen för två vägar, dvs «skillnaden mellan vägarna»
Path resolve(String other) Löser en absolut väg med hjälp av nuvarande och relativa vägar.
URI toUri() Returnerar URI om den aktuella sökvägen/filen.
Path toAbsolutePath() Konverterar sökvägen till en absolut sökväg om den är relativ.
File toFile() Returnerar ett filobjekt som motsvarar det aktuella sökvägsobjektet.

"Och den nuvarande vägen - vad är det?"

"Detta är vägen som skickades till konstruktören av Path-objektet vars metoder anropas."

"OK. Så vilka metoder har klassen Files ?"

"Har du bråttom att komma någonstans? Jag ska berätta det nu. Här är de viktigaste metoderna:"

Metoder i klassen Files Beskrivning
Path createFile(…) Skapar en fil på disken.
Path createDirectory(…) Skapar en katalog.
Path createDirectories(…) Skapar en katalog och alla dess underkataloger.
Path createTempFile(…) Skapar en temporär fil.
Path createTempDirectory(…) Skapar en tillfällig katalog.
void delete(Path path) Tar bort en fil.
Path copy(Path source, Path target,…) Kopierar en fil.
Path move(Path source, Path target,…) Flyttar en fil.
boolean isSameFile(Path, Path) Jämför två filer.
boolean isDirectory(Path) Är sökvägen en katalog?
boolean isRegularFile(Path) Är sökvägen en fil?
long size(Path) Returnerar filstorleken.
boolean exists(Path) Finns det ett objekt med samma namn?
boolean notExists(Path) Finns inte ett objekt med samma namn?
long copy(InputStream, OutputStream) Kopierar byte från InputStream till OutputStream.
long copy(Path, OutputStream) Kopierar alla byte från sökvägen till OutputStream.
long copy(InputStream, Path) Kopierar alla byte från InputStream till sökvägen.
byte[] read(InputStream, int initialSize) Läser en array av byte från InputStream.
byte[] readAllBytes(Path path) Läser alla byte från InputStream.
List<String> readAllLines(Path path,..) Läser textfilen och returnerar en lista med strängar.
Path write(Path path, byte[] bytes,…) Skriver en array av byte till en fil.

"Vad intressant! Så många coola funktioner, och alla på samma plats."

"Tja titta. Anta att du vill ladda ner en fil från Internet och sedan skicka den till någon. För att göra detta är det väldigt bekvämt att skapa en temporär fil på disken och spara den lästa informationen till den."

"Är det svårt att ladda ner en fil från Internet?"

"Det är väldigt enkelt. Titta på det här exemplet:"

Koda
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);

"Och det är allt?"

"Ja, vad hade du förväntat dig att se? Det är bara 4 streck."

" Rad 1.  Skapar ett URL-objekt, till vilket URL-adressen för bildfilen skickas.

" Rad 2.  En ström för att läsa en fil (InputStream) öppnas på url-objektet.

" Rad 3.  Metoden createTempFileanvänds för att skapa en temporär fil.

" Rad 4.  Metoden Files.copy kopierar data från  inputStream till tempFile. Det är allt."

"Genial!"

"Bra. Jag är glad att du gillar det. Jag tror att du kan lista ut resten av metoderna själv. Och jag ska be Diego ge dig flera uppgifter om dem."

"Förresten, här är en bra länk om det här materialet"