Hallo.
Ich lese Fortran-Binärdateien (das Lesen erfolgt also in Records mit einer bestimmten Länge) aus dem Jar-File aus, welches auch das eigentliche Programm enthält. Das löse ich wie folgt:
Das so gelesene ByteArray übergebe ich mittels JNI an eine C-Routine, welche von diesem 512 8-Byle große Double-Zahlen ließt. Soweit so gut.
Die Technik mit dem Einlesen mittels
funktioniert nicht immer einwandfrei. Bei einigen Records liefert dieser InputStream falsche Daten, was sich dadurch äußert, das in der C-Routine falsche Werte gelesen werden.
Lese ich hingegen mit dem Code ein, der im obigen Beispiel auskommentiert ist (also direkt vom FileSystem) funktioniert das EInlesen bei jedem Record immer einwandfrei. Der Fehler liegt also genau in diesen 3 Zeilen (nehme ich zu 95% an).
Wie kann hier ein Fehler einstehen?
Oder noch besser wie kann ich das Umgehen?
Kann es an der Kompression des Jar-Files liegen?
Gibt es andere Methoden um Dateien direkt aus dem Jar-File zu lesen (bei denen das Problem eventuell nicht auftritt)
Bitte helft mir! Ich verzweifle so langsam daran.
Gruß carsten
Ich lese Fortran-Binärdateien (das Lesen erfolgt also in Records mit einer bestimmten Länge) aus dem Jar-File aus, welches auch das eigentliche Programm enthält. Das löse ich wie folgt:
Code:
byte b[] = new byte[4096];
try {
int i = filename.lastIndexOf("/");
String str = filename.substring(i+1);
InputStream is = Myclass.class.getClassLoader().getResourceAsStream(str);
//File f = new File("/home/user/Desktop/"+str);
//InputStream is = new FileInputStream(f);
is.skip(rec);
is.read(b);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
Das so gelesene ByteArray übergebe ich mittels JNI an eine C-Routine, welche von diesem 512 8-Byle große Double-Zahlen ließt. Soweit so gut.
Die Technik mit dem Einlesen mittels
Code:
getClassLoader().getResourceAsStream(str)
Lese ich hingegen mit dem Code ein, der im obigen Beispiel auskommentiert ist (also direkt vom FileSystem) funktioniert das EInlesen bei jedem Record immer einwandfrei. Der Fehler liegt also genau in diesen 3 Zeilen (nehme ich zu 95% an).
Wie kann hier ein Fehler einstehen?
Oder noch besser wie kann ich das Umgehen?
Kann es an der Kompression des Jar-Files liegen?
Gibt es andere Methoden um Dateien direkt aus dem Jar-File zu lesen (bei denen das Problem eventuell nicht auftritt)
Bitte helft mir! Ich verzweifle so langsam daran.
Gruß carsten