Ce face Files.size
Files.size(cale) dă numărul de octeți ai fișierului, ca long. Dacă fișierul nu există, aruncă NoSuchFileException.
Numărul de octeți nu este același cu numărul de caractere: în UTF-8, literele simple ocupă un octet, iar literele românești ă, â, î, ș, ț ocupă câte doi. Pentru foldere valoarea depinde de sistem și nu înseamnă mărimea conținutului.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Fișierul măsurat. |
Ce returnează
Mărimea în octeți (long).
Exemple
Exemplul 1: Octeți față de caractere
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException {
Path a = Files.writeString(Path.of("fara.txt"), "Iasi");
Path b = Files.writeString(Path.of("cu.txt"), "Iași");
System.out.println("Iasi: " + Files.size(a) + " octeți");
System.out.println("Iași: " + Files.size(b) + " octeți");
}
}
Rezultat
Iasi: 4 octeți
Iași: 5 octeți
Exemplul 2: Mărimea afișată în KB
Un fișier de 3000 de rânduri a câte 10 octeți (9 cifre + \n) are 30.000 de octeți.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) throws IOException {
String continut = IntStream.range(0, 3000)
.mapToObj(i -> String.format("%09d%n", i))
.collect(Collectors.joining());
Path cale = Files.writeString(Path.of("coduri.txt"), continut);
long octeti = Files.size(cale);
System.out.println(octeti + " octeți");
System.out.printf("%.1f KB%n", octeti / 1024.0);
}
}
Rezultat
30000 octeți
29.3 KB
Greșeli frecvente
- Folosești
Files.sizeca număr de caractere. Pentru text cu diacritice cele două diferă. - Aduni
Files.sizepentru un folder ca să afli cât ocupă. Trebuie să aduni mărimile fișierelor din el (cuFiles.walk).
Comenzi înrudite
Files.getLastModifiedTime: Returnează momentul ultimei modificări a unui fișier, ca FileTime; util pentru a afla care fișier e mai nou.File: Clasa veche pentru căi de fișiere: exists verifică existența, getName dă numele, length mărimea în octeți.Files.walk: Parcurge un folder cu tot ce conține, la orice adâncime, și dă toate căile ca Stream<Path>, începând cu folderul însuși.Files.readString: Citește tot conținutul unui fișier text într-un singur String (implicit în UTF-8).