🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153869

Re: Chodzenie po katalogach i po archiwum

#153869
From: Arivald
Date: Sat, 14 Sep 2013 20:17
49 lines
3185 bytes
W dniu 2013-09-14 15:32, Borneq pisze:
> Pobierać listę plików dla danego katalogu można używając
> File[] filesAndDirs = dir.listFiles(); gdzie dir jest klasy File
> lub
> File[] filesAndDirs = fileSystemView.getFiles(currentDirectory, false);
> gdzie currentDirectory jest typu File
> To drugie rozwiązanie jest lepsze, bo zmieniając
> currentDirectory = fileSystemView.getParentDirectory(currentDirectory);
> nie ma problemu gdy idziemy wyżej niz był nasz pierwszy katalog, a w
> pierwszym rozwiązaniu bywały problemy.

Problemy? File.getParentFile() zawsze działa.


> Tymczasem gdy chcę się poruszać w archiwum a metoda listująca daje mi
> listę ścieżek, tworzę swoją klasę np. nazywając ją TreeFile, wypełniam
> ją ścieżkami, sortuję itd.
> A teraz pobieranie listy plików i katalogów
> filesAndDirs = treeFile.getFiles(currentDirectory)
> Jak to najlepiej rozwiązać? czy filesAndDirs ma być typu File[] ? ale
> wówczas currentDirectory oznaczający katalog w archiwum też ma być typu
> File.Ale wówczas chyba jest źle bo File oznaczają rzeczywiste pliki. Czy
> też wprowadzić elementy typu TreeFileItem implementujące Comparable? ale
> wówczas będą potrzebne zupełnie rózne metody do chodzenia po
> rzeczywistych katalogach a inne po archiwum.


Trochę nie tak.

Po pierwsze, nie próbuj tworzyć wspólnego interfejsu z File i czymś do 
archiwów. Raczej zrób owijki do obu, ze wspólnym interfejsem, i tego 
interfejsu używaj dalej w kodzie.

Tzn prawdopodobnie masz już gotową bibliotekę do archiwów, z obiektowym 
dostępem do plików wewnątrz. Nie ma sensu pisać tego samemu.

Więc stwórz interfejs (np MyFile), ze wszystkimi metodami które musisz 
mieć w aplikacji. I tylko takimi które muszą być, nie sil się na pisanie 
metod których i tak nie użyjesz. Zawsze możesz potem dodać nowe metody.

W następnym kroku piszesz dwie owijki, implementujące MyFile. Jedna 
będzie przekazywać i tłumacvzyć wywołania interfejsu MyFile do 
java.io.File, a druga do obektu pracujęcego archiwum.

I teraz dodanie obsługi nowego typu archiwum sprowadza się do dodanie 
nowej klasy owijki inplementującej MyFile.

-- 
Arivald
Technical Details
Message-ID: <l12gel$9lv$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <l11oi9$6l3$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <NOSPAMarivald@interia.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: Chodzenie po katalogach i po archiwum
Date: Sat, 14 Sep 2013 22:17:36 +0200
Organization: Dialog Net
Lines: 50
Message-ID: <l12gel$9lv$1@news.dialog.net.pl>
References: <l11oi9$6l3$1@node1.news.atman.pl>
NNTP-Posting-Host: dynamic-78-8-141-49.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1379190037 9919 78.8.141.49 (14 Sep 2013 20:20:37 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Sat, 14 Sep 2013 20:20:37 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0
In-Reply-To: <l11oi9$6l3$1@node1.news.atman.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit