Bei mir funktionierte Dein Code auch nicht (mit NetBeans IDE).
Mit System.getProperty("java.class.path") bekommt man einen String zurück, mit dem
Path zu Deiner .class.
Allerdings können da mehrere Paths drin stehen, also dachte ich mir, ich durchsuche
einfach alle diese classpaths nach der Datei.
Dabei ist zu beachten, dass die Separatoren für Files und Paths auf anderen Systemen
anders sein können:
PathSeparator auf Windows = ";" - auf Unix = ":"
FileSeparator auf Windows = "\" - auf Unix = "/"
Also nicht hardcoden, sondern File.separator und File.pathSeparator nehmen.
Code: Alles auswählen
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class TextEinlesen {
private static File searchClassPathForFile(String file) {
//String pathseparator = File.pathSeparator; //System.getProperty("path.separator");
//String fileseparator = File.separator; //System.getProperty("file.separator");
String classpath[] = System.getProperty("java.class.path").split(File.pathSeparator);
for(String path : classpath)
{
//System.out.println("class path: "+path);
File myFile = new File(path+File.separator+file);
if(myFile.exists()) return myFile;
}
return null;
}
public static void main(String[] args) {
//System.out.println(System.getProperty("java.class.path"));
//System.out.println(System.getProperty("user.dir"));
File myFile = searchClassPathForFile("test.txt");
if (myFile != null) {
try {
FileReader fR = new FileReader(myFile);
BufferedReader bR = new BufferedReader(fR);
String zeile = null;
while ((zeile = bR.readLine()) != null) {
System.out.println(zeile);
}
bR.close();
} catch(Exception ex) {
//;
}
} else {
System.out.println("Textdatei nicht gefunden!");
}
}
}