Wie man Java-Datei absoluten Pfad von InputStream?

Bin ich auf Java 6 und ich haben eine Methode, die durchsucht das Laufzeit-classpath nach einer Datei namens config.xml. Wenn gefunden, die ich Lesen möchte, den Inhalt der Datei in einen string:

InputStream istream = this.getClass().getClassLoader().getResourceAsStream("config.xml");
if(istream != null) {
    System.out.println("Found config.xml!");

    StringBuffer fileData = new StringBuffer(1000);
    BufferedReader reader;
    try {
        reader = new BufferedReader(new FileReader(fileName));
        char[] buf = new char[1024];
        int numRead = 0;
        while((numRead=reader.read(buf)) != -1) {
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
            reader.close();
        }
    } catch (FileNotFoundException fnfExc) {
        throw new RuntimeException("FileNotFoundException: " + fnfExc.getMessage());
    } catch (IOException ioExc) {
        throw new RuntimeException("IOException: " + ioExc.getMessage());
    }
}

Wenn ich diesen code ausführen möchte, bekomme ich folgende Ausgabe in der Konsole:

Found config.xml!
Exception in thread "main" java.lang.RuntimeException: FileNotFoundException: config.xml (No such file or directory)
    at com.me.myapp.Configurator.readConfigFileFromClasspath(Configurator.java:556)
    at com.me.myapp.Configurator.<init>(Configurator.java:34)
    ...rest of stack trace omitted for brevity

Also der classpath-scan für config.xml erfolgreich ist, aber dann kann der Leser nicht scheinen, um die Datei zu suchen. Warum??? Meine einzige Theorie ist, dass, wenn config.xml finden Sie auf den classpath, enthalten nicht den absoluten Pfad zum Speicherort der Datei auf dem system, und vielleicht ist es das, was den Leser-code gesucht wird.

Haben Sie versucht this.getClass().getResourceAsStream("config.xml")?
Warum nicht einfach Lesen gerade aus istream?

InformationsquelleAutor | 2013-06-26

Schreibe einen Kommentar