Dateien aus Source-Package verwenden

Kababär

Top Contributor
Hi,

um zu vermeiden, immer die vollständigen Pfade von meinen Dateien mitanzugeben, habe ich mir diese bei Netbeans in den Source Packages Ordner gelegt und will nun mit
Code:
byte[] b1 = Reader.readFile(new File("Butterfly.bmp"));
auf die Datei zuzugreifen, doch bekomme eine "NoSuchFileException".
Code:
byte[] b4 = Reader.readFile(new File("C:\\Users\\name\\Downloads\\sw_verlauf_600dpi.bmp"));
funktioniert allerdings.
Wieso? Kann ich es irgendwie umbiegen, dass Variante 1 funktioniert?
 
probier mal:
Java:
File executedProgram = new File(System.getProperty("java.class.path"));
File parentFolder = executedProgram.getAbsoluteFile().getParentFile();
String filePath = parentFolder.toString() + "\\Butterfly.bmp";
File file = new File(filePath);
EDIT: achso sry, die Dateien befinden sich in src? dann brauchst du \\src\\Butterfly.bmp
 
Zuletzt bearbeitet:
Code:
        InputStream isButter = ReverseEng.class.getClass().getClassLoader().getResourceAsStream("butterfly.bmp");
Gibt mir einen Nullpointer zurück.

Code:
        File executedProgram = new File(System.getProperty("java.class.path"));
        File parentFolder = executedProgram.getAbsoluteFile().getParentFile();
        String filePathButter = parentFolder.toString() + "\\src\\Butterfly.bmp";
        File fileButter = new File(filePathButter);

Schaut im build-Ordner nach einem src-Ordner ( der nicht unter build, sondern neben build existiert) und dort soll das Bild liegen.
Theoretisch müsste nur noch eine Etappe höher gucken, also nicht in build, sondern direkt in src.
Geht das oder muss ich ein String.replace anwenden?
 
Dann mach einfach nochmal getParentFile(), also:
Java:
File executedProgram = new File(System.getProperty("java.class.path"));
File parentFolder = executedProgram.getAbsoluteFile().getParentFile().getParentFile();
String filePathButter = parentFolder.toString() + "\\src\\Butterfly.bmp";
File fileButter = new File(filePathButter);
 
Hm ich verstehe sowieso nicht wieso du mit NetBeans bei der ersten Version im build-Ordner warst. Bei mir in Eclipse bin ich mit dieser Version im übergeordneten Verzeichnis, also im Ordner wo bin, src usw. liegen.
Wenn ich ein .jar erstelle bin ich damit auch in dem Ordner in dem das .jar liegt.
 
Dann wirds "/butterfly.bmp" sein ohne .getClassLoader()
Auch probiert. Selbes Ergebnis.

Code:
Hm ich verstehe sowieso nicht wieso du mit NetBeans bei der ersten Version im build-Ordner warst. Bei mir in Eclipse bin ich mit dieser Version im übergeordneten Verzeichnis, also im Ordner wo bin, src usw. liegen.
Wenn ich ein .jar erstelle bin ich damit auch in dem Ordner in dem das .jar liegt.
Das weiß ich allerdings auch nicht.. 😕
 
Eclipse ist nunmal nicht gleich NetBeans. Ist doch kein Wunder das die sich anders Verhalten.
Die eine IDE startet das Programm eben aus dem build Ordner heraus und die andere aus dem Projektwurzelverzeichnis.

Mit getResourceAsStream kann man gleichermaßen auf das passende Objekt zugreifen und außerdem funtioniert getResourceAsStream auch wenn du dein Programm als .jar exportierst
 

Zurück
Oben