Wczytywanie listy plików - po wyeksportowaniu do JAR

0

Witam,
Korzystam z Eclipse i mam problem z wczytaniem listy plików z danego katalogu.
Kompilując kod wszystko działa, ale po wyeksportowaniu projektu do Runnable Jar ,pojawia się problem(błędna lokalizacja).

Kod wczytywania wygląda następująco:

 
File folder = new File("ressources\\sounds\\");
stringArray = folder.list();

Co zrobić ,żeby wskazać lokalizację do folderu, który jest "schowany" w Jar (zapakowany w projekcie)?

Z obrazkami wystarczyło:

this.img = new ImageIcon(this.getClass().getResource(imgUrl)).getImage();

Z plikami nie wiem jak to zrobić , szukam już od paru godzin rozwiązania.

Z góry dzięki za pomoc!

2

Nie da sie stworzyc obiektu File dla jakiegos katalogu / pliku w jarze. Nie da sie zatem zrobic takiego listingu jak ty sobie zyczysz. Najblizsze co mi przychodzi do glowy to iterowanie po jarze i sprawdzanie czy sciezka dla JarEntry / ZipEntry zaczyna sie twoim stringiem / nazwa katalogu, i jesli tak, to dodanie do jakiejs listy. Moze ktos bedzie mial inny pomysl.

1

Czy zawartość katalogu sounds będzie się zmieniać w trakcie pracy programu? Jeśli nie, to może dodaj do jara plik tekstowy z zawartością tego katalogu.

0

Nie będzie zmieniana w trakcie działania. Właśnie też myslałem o pliku tekstowym, i go wczytać (chyba) za pomocą BufferedReader . Muszę sprawdzić czy można ustawić ścieżke w środku Jar'a, dla tej klasy.

0

Jedynie mi działa to w ten sposób:

String filename = "/ressources/lists.txt";
			
InputStream stream = this.getClass().getResourceAsStream(filename);
Scanner src= new Scanner(stream);
String[] temp = new String[100];
int licznik = 0;

while(src.hasNext()){
     temp[licznik] = src.next();
     licznik++;
}
			 
     stringArray = new String[licznik];
for(int i =0; i < stringArray.length; i++){
     stringArray[i] = temp[i];
}			 

Jak macie jakieś lepsze rozwiązania to poprosiłbym .
Dzięki!

0

Moze kolega mowi dobrze po niemiecku - tam jest przez 2 s ;d

1

Ja bym zamienił tablicę temp na kolekcje, zadziała również gdy lista ma więcej niż 100 pozycji.

ArrayList<String> temp = new ArrayList<String>();
while(src.hasNext()){
     temp.add(src.next());
}
 
stringArray = new String[temp.size()];
stringArray = temp.toArray(stringArray);

Zakładam, że stringArray musi być tablicą, jeśli nie, to kod jest jeszcze prostszy.

ArrayList<String> stringArray = new ArrayList<String>();
while(src.hasNext()){
     stringArray.add(src.next());
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1