Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package ls_in_java;
- import java.io.File;
- import java.io.Serializable;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Objects;
- import java.util.Set;
- import java.util.TreeSet;
- /**
- *
- * @author Dominika
- */
- public class Plikofolder implements Comparable<Plikofolder>, Serializable{
- private enum Pczyf { PLIK, FOLDER };
- private String nazwa;
- private Pczyf plikczyfolder;
- private Date data;
- private transient File plik;
- private long rozmiar;
- private Set<Plikofolder> lista;
- //zawartosc folderu
- public String getNazwa() {
- return nazwa;
- }
- public void setNazwa(String nazwa) {
- this.nazwa = nazwa;
- }
- public long getRozmiar() {
- return rozmiar;
- }
- Plikofolder(String sciezka, boolean sort)
- {
- this.plik=new File(sciezka);
- this.nazwa = this.plik.getName();
- if(this.plik.isDirectory())
- {
- this.plikczyfolder = Pczyf.FOLDER;
- }
- else
- {
- this.plikczyfolder=Pczyf.PLIK;
- this.rozmiar=this.plik.length();
- }
- this.data= new Date(this.plik.lastModified());
- if(sort == true)
- {
- lista=new TreeSet<>();
- }
- else
- {
- lista = new HashSet<>();
- }
- if (this.plikczyfolder.equals(Pczyf.FOLDER))
- {
- //Ĺ‚aduj co w tym folderze siedzi
- czytajFolder(sort);
- }
- }
- private void czytajFolder(boolean sort)
- {
- File pliki[] = this.plik.listFiles();
- //zczytaj pliki do tabelki
- for (File x : pliki)
- {
- this.lista.add(new Plikofolder(x.getAbsolutePath(), sort));
- }
- //po co ten sort tu jest?
- if(this.plik.isDirectory())
- {
- this.rozmiar = this.lista.size();
- }
- this.plik = null;
- }
- @Override
- public int compareTo(Plikofolder x)
- {
- if(this.equals(x))
- return 0;
- if(this.rozmiar == x.rozmiar)
- return this.nazwa.compareTo(x.nazwa);
- else
- return Long.valueOf(this.rozmiar).compareTo(x.rozmiar);
- // takie same rozmiary, cisnij po nazwach.
- }
- @Override
- public boolean equals(Object x)
- {
- //czy to ten sam obiekt? a kto to wie?
- //nie mozna wejsc dwa razy do tej samej rzeki i inne opowiesci filozoficzne..
- if(x == null)
- return false;
- if(this.getClass() != x.getClass())
- return false;
- if(this == x)
- return true;
- // Plikofolder porownywany = (Plikofolder)x;
- // jezeli sa tej samej klasy to rzutujemy na ObiektKP
- //return (nazwa.equals(porownywany.nazwa) && rozmiar == porownywany.rozmiar);
- //porownujemy nazwe i rozmiar
- return false;
- }
- @Override
- // haszowanie, wygenerowane. i nie za bardzo rozumiem
- // po co one tej javie jest ale wierze ze ma to sens
- public int hashCode() {
- int hash = 7;
- hash = 43 * hash + Objects.hashCode(this.nazwa);
- hash = 43 * hash + (int) (this.rozmiar ^ (this.rozmiar >>> 32));
- return hash;
- }
- @Override
- public String toString()
- {
- String wynik = nazwa + " ";
- if (this.plikczyfolder == Pczyf.FOLDER)
- wynik += "Folder ";
- else
- wynik += "Plik ";
- return (wynik + rozmiar + " " + formatujDate());
- // rozmiar i data ostatniej modyfikacji
- }
- public void print(int przerwa) // wyswietlenie zawartosci kolekcji
- {
- //przerwa to poziom zaglebienia w drzewie
- Iterator it = lista.iterator();
- if(lista.size() > 0)
- {
- dodajSpacje(przerwa);
- System.out.println("POCZATEK FOLDERU");
- }
- while(it.hasNext())
- {
- dodajSpacje(przerwa);
- Plikofolder file = (Plikofolder)it.next();
- System.out.println(file.toString());
- if(file.plikczyfolder == Pczyf.FOLDER)
- file.print(przerwa+1);
- }
- if(lista.size() > 0)
- {
- dodajSpacje(przerwa);
- System.out.println("KONIEC FOLDERU");
- //koniec folderu
- }
- }
- private void dodajSpacje(int przerwa)
- {
- for(int i = 0;i < przerwa; i++)
- System.out.print(" ");
- }
- private String formatujDate() // przeksztalcenie daty na odpowiedni format
- {
- DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- return formatter.format(this.data);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement