Mam napisać program ktory odczytuje zawartość pliku. Jak napiszę tak
FileReader czyt = new FileReader("test.ppp");
To gdzie mam wstawić taki plik?
Dodam, że piszę to w Eclipsie.
Mam napisać program ktory odczytuje zawartość pliku. Jak napiszę tak
FileReader czyt = new FileReader("test.ppp");
To gdzie mam wstawić taki plik?
Dodam, że piszę to w Eclipsie.
W ten sposób to w głównym kataogu projektu.
a jakbym zrobił z tego jar'a to wtedy gdzie ten plik umieścić??
w katalogu z jarem, ale znacznielepszym sposobem jest dostęp przez:
new File(new URI(Object.class.getClassLoader().getResource("").getPath()));
Trochę kombinowany, bo Od razu robi File, ale generalnie działa.
ps. dokładny opis dam wieczorkiem.
@Koziołek, pytanie powiązane. Swego czasu wojowałem z pakietem javax.comm do obsługi portów szeregowych, pakiet ten wymaga by w katalogu .../lib/ext znajdował się plik javax.comm.properties. Problem pojawił się wtedy gdy moje klasy oraz pakiet javax.comm skleiłem do jednego jara. Umieszczałem plik javax.comm.properties w najróżniejszych miejscach - program tego pliku nie widział.
Lekarstwem okazała się zamiana pakietu javax.comm na bibliotekę RXTXcomm.jar.
@bogdans, pakiet javax.comm jak i kilka innych pakietów maja tą nieprzyjemną właściwość, że trzeba je tak naprawdę wrzucać do endosed, lib/ext lub innej ściśle przez suna określonej lokalizacji. Tworzy to taki własni problem jak dystrybuować soft w postaci jednej paczki. Zazwyczaj można metodą prób i błędów w trakcie testów określić o co dokładnie sunowi chodziło i przy pierwszym uruchomieniu programu odpowiednio potworzyć pliki wraz z zawartością.
Tym przypadku to powino wyglądać jakoś tak:
\program
|-\lib
| |-\ext
| | |-javax.comm.properties
|-\jar
| |-program.jar
Można też spróbować poszukać jak konfiguruje się ten pakiet.
Koziołek napisał(a)
w katalogu z jarem, ale znacznielepszym sposobem jest dostęp przez:
new File(new URI(Object.class.getClassLoader().getResource("").getPath()));
Trochę kombinowany, bo Od razu robi File, ale generalnie działa.
ps. dokładny opis dam wieczorkiem.
Ciągle czekam na dokładny opis:)
zależy kto co rozumie przez wieczór ;)
Ok pełny przykład:
package programmers.net.zasoby118979;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
public class ShowJarResources {
/**
* @param args
* @throws IOException
* @throws URISyntaxException
*/
public static void main(String[] args) throws IOException, URISyntaxException {
URL url = ShowJarResources.class.getResource("plik.txt");
URI uri = new URI(url.getFile());
File file = new File(uri.getPath());
System.out.println(file.getAbsolutePath());
}
}
plik.txt znajduje się w tym samym katalogu co plik class. Wynikiem będzie:
D:\workspace\4programmers\zasoby.jar!\programmers\net\zasoby118979\plik.txt
Wystarczy zatem dopisać sobie klasę narzędziową, która będzie konfigurowała ścieżkę i tyle. Można też bardziej bezczelnie podejść do problemu i zamiast plik.txt podaj nazwę pliku class. Wtedy na pewno plik zostanie odnaleziony i nie poleci żaden NullPointerException