Clasa File - Lucrul cu fișiere și directoare
Clasa File, definită în pachetul java.io, nu funcționează direct cu fluxurile. Sarcina sa este gestionarea informațiilor despre fișiere și directoare. Deși la nivelul sistemului de operare fișierele și directoarele sunt diferite, în Java acestea sunt descrise de aceeași clasă File.
În funcție de ceea ce trebuie să reprezinte obiectul File - fișier sau director - putem utiliza unul dintre constructorii pentru crearea obiectului:
File(String cale_catre_director)
File(String cale_catre_director, String nume_fisier)
File(File director, String nume_fisier)
De exemplu:
// creăm obiectul File pentru director
File dir1 = new File("C://SomeDir");
// creăm obiecte pentru fișierele care se află în director
File file1 = new File("C://SomeDir", "Hello.txt");
File file2 = new File(dir1, "Hello2.txt");
Clasa File are o serie de metode care permit gestionarea fișierelor și directoarelor. Iată câteva dintre ele:
- boolean createNewFile(): creează un nou fișier la calea care a fost transmisă în constructor. În caz de succes, returnează true, altfel false
- boolean delete(): șterge directorul sau fișierul la calea specificată în constructor. Dacă ștergerea este reușită, returnează true
- boolean exists(): verifică dacă fișierul sau directorul specificat în constructor există. Dacă există, returnează true, altfel false
- String getAbsolutePath(): returnează calea absolută pentru calea transmisă în constructorul obiectului
- String getName(): returnează numele scurt al fișierului sau directorului
- String getParent(): returnează numele directorului părinte
- boolean isDirectory(): returnează true dacă la calea specificată se află un director
- boolean isFile(): returnează true dacă la calea specificată se află un fișier
- boolean isHidden(): returnează true dacă directorul sau fișierul este ascuns
- long length(): returnează dimensiunea fișierului în bytes
- long lastModified(): returnează timpul ultimei modificări a fișierului sau directorului. Valoarea reprezintă numărul de milisecunde trecute de la începutul erei Unix
- String[] list(): returnează un array de fișiere și subdirectoare aflate într-un anumit director
- File[] listFiles(): returnează un array de fișiere și subdirectoare aflate într-un anumit director
- boolean mkdir(): creează un nou director și în caz de succes returnează true
- boolean renameTo(File dest): redenumește fișierul sau directorul
Lucrul cu directoarele
Dacă obiectul File reprezintă un director, metoda isDirectory() returnează true. Astfel, putem obține conținutul său - subdirectoare și fișiere - utilizând metodele list() și listFiles(). Iată cum putem obține toate subdirectoarele și fișierele dintr-un anumit director:
import java.io.File;
public class Program {
public static void main(String[] args) {
// definim obiectul pentru director
File dir = new File("C://SomeDir");
// dacă obiectul reprezintă un director
if(dir.isDirectory())
{
// obținem toate obiectele conținute în director
for(File item : dir.listFiles()){
if(item.isDirectory()){
System.out.println(item.getName() + " \t folder");
}
else{
System.out.println(item.getName() + "\t file");
}
}
}
}
}
Acum vom efectua câteva operațiuni suplimentare cu directoarele, cum ar fi ștergerea, redenumirea și crearea:
import java.io.File;
public class Program {
public static void main(String[] args) {
// definim obiectul pentru director
File dir = new File("C://SomeDir//NewDir");
boolean created = dir.mkdir();
if(created)
System.out.println("Folder has been created");
// redenumim directorul
File newDir = new File("C://SomeDir//NewDirRenamed");
dir.renameTo(newDir);
// ștergem directorul
boolean deleted = newDir.delete();
if(deleted)
System.out.println("Folder has been deleted");
}
}
Lucrul cu fișierele
Lucrul cu fișierele este similar cu cel pentru directoare. De exemplu, obținem datele pentru unul dintre fișiere și creăm un nou fișier:
import java.io.File;
import java.io.IOException;
public class Program {
public static void main(String[] args) {
// definim obiectul pentru fișier
File myFile = new File("C://SomeDir//notes.txt");
System.out.println("File name: " + myFile.getName());
System.out.println("Parent folder: " + myFile.getParent());
if(myFile.exists())
System.out.println("File exists");
else
System.out.println("File not found");
System.out.println("File size: " + myFile.length());
if(myFile.canRead())
System.out.println("File can be read");
else
System.out.println("File cannot be read");
if(myFile.canWrite())
System.out.println("File can be written");
else
System.out.println("File cannot be written");
// creăm un nou fișier
File newFile = new File("C://SomeDir//MyFile");
try
{
boolean created = newFile.createNewFile();
if(created)
System.out.println("File has been created");
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
}
La crearea unui nou fișier, metoda createNewFile() va arunca o excepție IOException în caz de eșec, așa că este necesar să o capturăm, de exemplu, într-un bloc try...catch, așa cum se face în exemplul de mai sus.