Gestionare Folder-Fisier

Sa se implementeze un sistem de gestiune a fisierelor. Acest sistem contine urmatoarele entitati: Folder si Fisier.

Un fisier contine ca atribute numele si continutul(string-uri), ambele specificate la crearea unui obiect fisier. Asupra unui fisier se pot realiza urmatoarele operatiii:

    • copiaza: aceasta metoda va returna o referinta la un fisier nou care reprezinta o copie a fisierului curent. Aceasta copie va avea acelasi continut ca si fisierul curent iar numele ei va fi alcatuit din numele fisierului curent plus string-ul "_copy".

    • toString va returna numele fisierului

Un folder continte un tablou(eventual si un contor daca se considera necesar) care poate referii maxim 64 de fisiere. Fiecare folder are un nume specificat la crearea folder-ului. Asupra Folder-ului se pot realiza urmatoarele operatii:

    • creeazaFisier: ce primeste ca parametru numele fisierului de creat si continutul sau. Daca folder-ul contine deja un fisier cu acest nume sau daca nu mai este loc atunci acest lucru va fi semnalat utilizatorului printr-un mesaj la iesirea standard; altfel se creaza fisierul si e memorat in tablou.

    • toString: va returna numele folder-ului impreuna cu numele fiecarui fisier continut(ex: FOLDER_1: FISIER_2,...FISIER_N)

Se va implementa si o metoda main intr-o clasa Source in care se creaza un obiect folder, se creaza in el cateva fisiere si se afiseaza folderulul la iesirea standard.

class Fisier {

private String nume_fisier;

private String continut_fisier;

public Fisier(String nume_fisier, String continut_fisier) {

this.nume_fisier = nume_fisier;

this.continut_fisier = continut_fisier;

}

public Fisier copiaza() {

Fisier fisier_nou = new Fisier(this.nume_fisier + "_copy", this.continut_fisier);

return fisier_nou;

}

public String toString() {

return this.nume_fisier;

}

public boolean equals(Object o) {

if (o instanceof Fisier) {

return ((Fisier) o).nume_fisier.equals(this.nume_fisier);

} else

return false;

}

}

class Folder {

private Fisier[] fisiere = new Fisier[64];

private int nr_fisiere;

private String nume_folder;

public Folder(String nume_folder) {

this.nume_folder = nume_folder;

this.nr_fisiere = 0;

}

public void creeazaFisier(Fisier f1) {

int s = 1;

if (nr_fisiere <= 64) {

for (int i = 0; i < this.nr_fisiere; i++)

if (f1.equals(fisiere[i]))

s = 0;

if (s == 0)

System.out.println("Fisierul deja exista");

else {

fisiere[nr_fisiere] = f1;

nr_fisiere++;

}

} else {

System.out.println("Numarul maxim de fisiere a fost atins");

}

}

public String toString() {

String result = "";

result = result + nume_folder + ": " + fisiere[0];

for (int i = 1; i < this.nr_fisiere; i++)

result = result + ", " + fisiere[i];

return result;

}

}

class Source {

public static void main(String[] args) {

Folder f1 = new Folder("Folder 1");

Folder f2 = new Folder("Folder 2");

Fisier fi1 = new Fisier("Fisier 1", "Continut 1");

Fisier fi2 = new Fisier("Fisier 2", "Continut 2");

Fisier fi3 = new Fisier("Fisier 3", "Continut 3");

f1.creeazaFisier(fi1);

f1.creeazaFisier(fi2);

f2.creeazaFisier(fi3);

System.out.println(f1);

System.out.println(f2);

}

}