Sunteți pe pagina 1din 5

Tehnologii Moderne de Programare , Limbajul Java, 2018 CEITI

Laborator24. Clase Java pentru intrări şi ieșiri. Clasa File.

Noțiuni teoretice
Clasa File este o subclasă a clasei Object, face parte din pachetul java.io şi permite lucru cu
fişiere şi directoare. Construcția unei instanțe a clasei File nu crează un fişier pe sistemul local, ci
doar o instanță ce încapsulează şirul specificat.
Constructori:
a) File(String numeCale);
b) File(String dir, String nume);
Principalele metode şi variabile:
Metodă Descriere
public String getPath() furnizează calea relativă
public String getAbsolutePath() furnizează calea completă
public boolean exists() returnează true dacă fișierul sau directoriul specificat
există
public boolean isDirectory() returnează true dacă fișierul există şi este director
public boolean isFile() returnează true dacă fișierul există pe sistemul de fişiere
public long length() returnează lungimea fişierului in octeţi sau 0 dacă nu
există
public String[] list() returnează un şir de nume de fişiere din directorul
specificat de obiectul fişier
boolean canRead() returnează true dacă fișierul sau directorul poate fi citit
boolean canWrite() returnează true dacă fișierul sau directorul poate fi
modificat
boolean delete() returnează true dacă fișierul sau directorul poate fi șters
boolean mkdir() returnează true dacă s-a reușit crearea unui director a
cărui cale este descrisă in File
boolean renameTo(File returnează true dacă s-a putut redenumi fișierul sau
noulNume) directorul, altfel returnează false.
boolean equals(Object compară obiectul this.File cu obiectul altObiect. Întoarce
altObiect) true dacă altObiect este obiect File care are aceeași cale
cu this.File.
String getName() întoarce numele fişierului
String getParent() întoarce un string ce conţine numele directorului părinte.
long length() întoarce dimensiunea fişierului în bytes
boolean mkdirs() creează calea curentă, întoarce True dacă operația s-a
realizat cu succes
String toString() întoarce calea spre fişier

Variabilă Descriere
final static String pathSeparator conţine simbolul folosit pentru separarea căilor (,,;’’
pentru DOS şi Windows, şi ,,:’’ pentru Unix)
1
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
Tehnologii Moderne de Programare , Limbajul Java, 2018 CEITI
final static char conţine simbolul folosit pentru separarea căilor (,,;’’
pathSeparatorChar pentru DOS şi Windows, şi ,,:’’ pentru Unix)
final static String separator conţine simbolul folosit pentru separarea denumirilor de
directoare într-o cale(,,\’’ pentru DOS şi Windows, ‚,/’’
pentru Unix)
final static char separator conţine simbolul folosit pentru separarea denumirilor de
directoare într-o cale(,,\’’ pentru DOS şi Windows, ‚,/’’
pentru Unix)

Exemplul1 Exemplul de mai jos pune în evidență crearea, în caz că nu există, a directoriului
c:\\dirProba, (sub Windows)
import java.io.File;
class Test_File{
public static void main(String [] args){
boolean reusita;
File dirNou = new File ("d:\\dirProba");
reusita = dirNou.mkdir();
if (dirNou.isDirectory())
System.out.println("Directoriul c:\\dirProba deja exista!!!");
if (reusita)
System.out.println("Am creat cu succes directoriul c:\\dirProba !");
else System.out.println("Nu am creat directoriul c:\\dirProba !!!");
}}

Rezultat:
Exemplul2 Se crează fișierul TestFisiere.txt, se va afişa numele acestuia, se va verifica şi se
va informa utilizatorul de existența fişierului, se va afişa dimensiunea în octeţi a fişierului.
import java.io.*;
public class Test_File_2 {
public static void main(String ...args) throws IOException{
File f1 = new File("Fisiere.txt");
f1.createNewFile();
if (f1.exists()) System.out.println("Fisierul exista");
else System.out.println("Fisierul nu exista ");
System.out.println("Numele fisierului: "+f1.getName());
System.out.println("Dimensiune in octeti: "+f1.length());
}}

Rezultat:

2
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
Tehnologii Moderne de Programare , Limbajul Java, 2018 CEITI
Exemplul3 În exemplul de mai jos se va realiza listarea fișierelor şi directoarelor folosind clasa
File din directoriul curent al programului sursă java:
import java.io.*;
class Test_File_3 {
public static void main(String args[]) throws IOException{
String dirName = ".";
File f1 = new File(dirName);
if (f1.isDirectory()){
System.out.println("Continutul directoriului curent"+dirName);
String s[] = f1.list();
for(int i = 0;i<s.length;i++){
File f = new File(dirName+"/"+s[i]);
if (f.isDirectory()){
System.out.println("Director:"+s[i]);
}else{System.out.println("Fisier:"+s[i]);
}}}else{ System.out.println(dirName+" nu este directoriu");
}}}

Rezultat:

Exemplul4 Crearea unei liste de elevi și salvarea acesteia într-un fișier. Citirea listei din fișier și
afișarea la ecran.
import java.io.*;
import java.util.*;
class Elev{
String nume;
double media;
Elev(String nume, double media){
this.nume = nume; this.media = media;
}}
class Scanner_File {
public static void main (String []args) throws IOException{
File fisier = new File("out.txt");
FileWriter fw = new FileWriter(fisier);
ArrayList<Elev> x = new ArrayList<Elev>();
x.add(new Elev("Mihai", 10));
x.add(new Elev("Gabriela",9));
x.add(new Elev("Laura", 8));
for(Elev i :x) fw.write(i.nume+" "+i.media+"\r\n"); fw.close();

3
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
Tehnologii Moderne de Programare , Limbajul Java, 2018 CEITI
Scanner filescan = new Scanner(new FileReader(fisier));
ArrayList <Elev> citire=new ArrayList<Elev>();
while (filescan.hasNext()) {
String n = filescan.next();
double m = Double.parseDouble(filescan.next());
citire.add(new Elev(n,m));
}
filescan.close();
for(Elev i :citire) System.out.println(i.nume+" "+i.media);
}}

Rezultat: Fișier:

Activități practice individuale


1. În exemplul 2 ,din noțiuni teoretice, adăugați metode care vor afişa :
 calea către fișierul creat
 calea absolută pentru fișierul creat
 dacă în fişier se pot sau nu înscrie date
 dacă se poate sau nu citi din fişier
 dacă obiectul f1 este director sau nu
 va înscrie în fişier numele şi prenumele dvs.
2. Modificaţi exemplul 3 din noţiunile teoretice astfel încît să listaţi fişierele şi directoarele
discului D.
3. Modificaţi exemplul 4 din noțiunile teoretice astfel încît datele despre elevi să fie citite de la
tastatură și anexate la datele care deja se află în fișier.
4. Creați clasa Pacient caracterizată de atributele cnp, nume, diagnoza, salon, medic. Înscrieți într-
un fișier 10 pacienți , cîte un pacient în fiecare rând. Elaborați o clasă care va realiza citirea listei
de pacienți din fișier. Afișați datele la ecran. Afișați lista pacienților dintr-un salon anumit. Afișați
lista pacienților unui medic cu o anumită diagnoză. Afișați datele unui pacient în dependență
de codul personal al acestuia (cnp).

4
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
Tehnologii Moderne de Programare , Limbajul Java, 2018 CEITI
5. Fie că aveți în calculator fișierul parole.txt în care aveți salvate login-ul şi parola de autentificare
a 3 persoane. Un rînd din fişier conţine login-ul şi parola unei singure persoane. Creați un
program Java care va permite utilizatorului să introducă de la tastatură login-ul şi parola , va
verifica dacă în fişier sunt datele introduse şi va afişa textul ,,Autentificare reușită’’ dacă datele
au fost găsite în fişier, ,,Date incorecte ’’ dacă datele introduse nu au fost găsite în fişier.
Notă : Folosiți clasele : FileReader, pentru lucrul cu fişiere şi Scanner pentru a citi date de la
tastatură.

Surse :

1. Cristian Frăsinaru , Curs Practic de Java, pag.118


2. Ştefan Tănase, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, editura Polirom, 2003, pag.268
3. Y. Daniel Liang , Introduction to Java Programming , 9th edition, pag. 730

5
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria