Sciezka do pliku

0

Witam,
Jak odniesc sie do pliku aby zawsze wskazywal na plik ktory znajduje sie w tym samym folderze co plik jar.
File rankingFile = new File("plik.txt");
Pisząc jak wyżej działa, ale tylko jeśli odpalamy z katalogu ręcznie plik jar. Przy odpalaniu z konsoli program nie znajduje tego pliku

0
new File(".\\plik.txt");

Albo w drugą stronę ukośnik :P

0

Niestety przy uruchamianiu przez konsole dalej nie wykrywa pliku

0

Bo w ten sposób zawsze dostajesz current working directory, a nie katalog w którym leży jar. A jak spróbujesz zrobić coś w stylu:

Jakaśtam.class.getResource("../plik.txt")

?

0

Nie mam pojecia jak to wstawic:
File rankingFile = new File (this.class.getResource("../plik.txt")); tak jest zle

0

Nie znajduje pliku new File (this.getClass().getResource("../plik.txt").toURI());

0

@Shalom: zasoby w ten sposob mozesz pobierac tylko i wylacznie jesli sa one w classpath. Taki byle jaki plik na dysku nie jest. Nauczcie sie wszyscy jak dziala cp i zasoby a nie pierdzielcie glupot...
Do autora: jesli plik lezy zawsze kolo jara, to aby dzialalo musisz w javie pobrac katalog w ktorym lezy aplikacja (jar lub folder z klasami). Na forum juz wielokrotnie sie przewijalo jak to zrobic, cos w stylu:
File appDir = new File(JakasKlasa.class.getProtectionDomain().getCodeSource().getLocation().toURI());
File f = new File(appDir, "jakisPlik.txt")
(moga byc bledy)

0

To dlatego, że taki plik po prostu nie istnieje...
".." - wskazuje na folder wyżej
jeśli chcesz go czytać, to nie jest Ci potrzebny obiekt File ... getResourceAsStream zwróci od razu InputStream

0
 appDir = new File (NAZWA KLASY.class.getProtectionDomain().getCodeSource().getLocation().getPath());
        rankingFile = new File(appDir, "PLIK");

Tak niestety nie działa.

0
 String decoded = URLDecoder.decode(this.class.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
        File fileOuttemp = new File(decoded);
        File cwd = fileOuttemp.getParentFile();
         String folder_jara =  cwd.getPath()

to mi zwraca poprawnie zawsze folder z jarem tylko nie wiem teraz jak dokleić do tego ten plik który jest w tym folderze.

0

Rozwiazanie:

 
String decoded = URLDecoder.decode(this.class.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
        File fileOuttemp = new File(decoded);
        File cwd = fileOuttemp.getParentFile();
        String dirpath = cwd.getPath();
        plik = new File(dirpath, "/plik.txt");

Zwróci zawsze się do pliku z katalogu z jarem nie ważne jak odpalanego. :)

0

Tego slasha przed "plik.txt" nie potrzebujesz, File sam doklei i to taki ktory jest natywny dla danego OS.

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