Ce face Files.isDirectory
Files.isDirectory(cale) returnează true doar dacă există un folder la calea dată. Files.isRegularFile(cale) returnează true doar pentru un fișier obișnuit (nu folder, nu dispozitiv special).
Pentru o cale care nu există, ambele dau false, fără excepție. Sunt utile când parcurgi un folder cu Files.list sau Files.walk și vrei să tratezi diferit fișierele și subfolderele.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Calea verificată. |
optiuni |
Opțional: LinkOption.NOFOLLOW_LINKS. |
Ce returnează
true sau false.
Exemple
Exemplul 1: Folder, fișier sau nimic
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
static void descrie(Path p) {
if (Files.isDirectory(p)) {
System.out.println(p + " este folder");
} else if (Files.isRegularFile(p)) {
System.out.println(p + " este fișier");
} else {
System.out.println(p + " nu există");
}
}
public static void main(String[] args) throws IOException {
Files.createDirectory(Path.of("documente"));
Files.writeString(Path.of("documente", "cv.txt"), "Ana Popescu, Iași");
descrie(Path.of("documente"));
descrie(Path.of("documente", "cv.txt"));
descrie(Path.of("documente", "poza.jpg"));
}
}
Rezultat
documente este folder
documente/cv.txt este fișier
documente/poza.jpg nu există
Exemplul 2: Doar fișierele dintr-un folder
Files.list dă și fișiere, și foldere; păstrăm doar fișierele și sortăm numele pentru o afișare stabilă.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) throws IOException {
Path proiect = Files.createDirectory(Path.of("proiect"));
Files.createDirectory(proiect.resolve("src"));
Files.writeString(proiect.resolve("README.md"), "# Proiect");
Files.writeString(proiect.resolve("note.txt"), "de făcut");
try (Stream<Path> continut = Files.list(proiect)) {
continut.filter(Files::isRegularFile)
.map(p -> p.getFileName().toString())
.sorted()
.forEach(System.out::println);
}
}
}
Rezultat
README.md
note.txt
Greșeli frecvente
- Folosești
!isDirectoryca să deduci că e fișier. Poate să nu existe deloc; verificăisRegularFile.
Comenzi înrudite
Files.exists: Verifică dacă un fișier sau un folder există la calea dată; nu aruncă excepții.Files.list: Returnează conținutul direct al unui folder (fișiere și subfoldere, fără să intre în ele), ca Stream<Path>.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.createDirectory: createDirectory creează un singur folder; createDirectories creează și folderele părinte lipsă, fără eroare dacă există.