2010-09-15 11 views
5

Piszę przypadki testowe, które należy wykonać w środowisku osgi, umieściłem dane testowe, które są zbiorem plików w pakiecie testowym. Mam dostęp do plików danych testowych za pomocą bundle.getResource, który zwraca adres URL, z którego mogę pobrać InputStream dla określonego pliku, ale jak mogę znaleźć listę wszystkich plików w określonym folderze w wtyczce testowej. W eclispe mogłem użyć fileLocator, aby to zrobić.Znajdowanie plików i folderów w pakiecie OSGI

/pakiet
          testdata
                jeden.txt
                dwa.txt
                three.txt
                folder1
                              plik1.txt
                              file2.txt

W powyższym zestawie chcę znaleźć wszystkie pliki i foldery, które są obecne w folderze testdata.


najlepsze Reards,
Keshav

Odpowiedz

-5

Resources (ćwiczenia, pliki, strumienie itp) dostępne przez classloader mogą być świadczone przez wszystko. Zazwyczaj zasoby są ładowane z pliku JAR. Ale może to być również baza danych, system plików lub zasób HTTP. Aby uzyskać listę zasobów, należy polegać na źródle znajdującym się za programem ładującym klasy. Jeśli zasoby znajdują się wewnątrz pliku JAR, musisz uzyskać sam plik JAR i uzyskać do niego dostęp za pośrednictwem np. java.util.zip. Ponieważ interfejs ClassLoader nie dostarcza informacji o źródle, musisz przejść na inne sposoby (np. Zahaczyć o frameworki OSGi, z których korzystasz).

+3

Wrong !!! Iterowanie na plikach ZIP itp. NIE jest przenośne w Javie, Java ma abstrakcję dla zasobów, które są kompletnie zepsute. Jest to bardzo zła praktyka, która jest niestety powszechna, ponieważ programy ładujące klasy nie mają iteratora dla swoich zasobów. Zobacz odpowiedź BJ: OSGi ma Bundle.findEntries i Bundle.getEntryPaths, która pozwala na iterację zasobów w sposób przenośny. –

12

Jeśli wiesz, co zawierają te informacje, użyj opcji Bundle.findEntries lub Bundle.getEntryPaths.