V
VoiDee
Gast
Hi,
ich habe ein kleines, aber nachhaltiges Problem mit dem Einlesen einer Textdatei:
Folgender Code funktioniert einwandfrei, wenn man in lokal ausführt:
Lokal bedeutet dabei, dass ich eine Main-Methode in der selben Klasse habe und von dort aus die Funktion copy() aufrufe. Die Quelldatei ist eine ASCII-Datei, in der 336 Textzeilen enthalten sind und die Datei ist 20.143 Bytes groß.
So weit - so gut. Lokal funktioniert das einwandfrei
Nun zu meinem Problem: wenn ich die Funktion aus einer RMI-Server Umgebung heraus aufrufe werden nur 8.192 Bytes (=interen Größe des von BufferedReader verwendeten Buffers) gelesen. Dann wird das Einlesen beendet, dass heisst es wird nicht mal eine Exception erzeugt. Der BufferedReader liefert ein end of file, so dass ich keine Ahnung habe, wie ich das Problem umgehen könnte.
Die geschriebene Zieldatei ist genau 8.192 Bytes groß.
Alle meine Versuche mit mark, skip, mit der read-Methode die Daten "anders" einzulesen führten nur zu einem Ergebnis: das Lesen wird bei Erreichen der Buffergröße beendet.
Irgendjemand eine Idee, wie man diesen Bug beheben kann bzw. was das grundlegende Problem sein könnte?
Gruß
voidee
PS: ich jab's unter JRE 1.5 und aktuellem 1.6 getestet, überall das selbe Problem
ich habe ein kleines, aber nachhaltiges Problem mit dem Einlesen einer Textdatei:
Folgender Code funktioniert einwandfrei, wenn man in lokal ausführt:
Code:
public int copy( String p_source, String p_target) {
BufferedReader l_reader = null;
BufferedWriter l_writer = null;
int l_cntLine = 0;
String l_line = null;
try {
l_reader = new BufferedReader( new FileReader(p_source));
l_writer = new BufferedWriter( new FileWriter(p_target,true) );
while ( (l_line=l_reader.readLine()) !=null )
{
l_writer.write(l_line);
l_writer.newLine();
l_cntLine++;
}
}
catch(Exception ex) {
ex.printStackTrace();
}
finally {
try {
l_writer.flush();
l_writer.close();
} catch(Exception e) {
e.printStackTrace();
}
try {
l_reader.close();
} catch(Exception e) {
e.printStackTrace();
}
l_writer = null;
l_reader = null;
}
return l_cntLine;
} // -- eof
So weit - so gut. Lokal funktioniert das einwandfrei
Nun zu meinem Problem: wenn ich die Funktion aus einer RMI-Server Umgebung heraus aufrufe werden nur 8.192 Bytes (=interen Größe des von BufferedReader verwendeten Buffers) gelesen. Dann wird das Einlesen beendet, dass heisst es wird nicht mal eine Exception erzeugt. Der BufferedReader liefert ein end of file, so dass ich keine Ahnung habe, wie ich das Problem umgehen könnte.
Die geschriebene Zieldatei ist genau 8.192 Bytes groß.
Alle meine Versuche mit mark, skip, mit der read-Methode die Daten "anders" einzulesen führten nur zu einem Ergebnis: das Lesen wird bei Erreichen der Buffergröße beendet.
Irgendjemand eine Idee, wie man diesen Bug beheben kann bzw. was das grundlegende Problem sein könnte?
Gruß
voidee
PS: ich jab's unter JRE 1.5 und aktuellem 1.6 getestet, überall das selbe Problem