inhaltgetreues Kopieren von Dateien

takidoso

Erfahrenes Mitglied
Hallo und Halli,
bisher hatte ich mi reingebildet, dass wenn man eine eingangsdatei byteweise einliest und wieder schreibt dass man dann das original getreu kopiert hat.
so wie hier:

Code:
...
FileInputStream sourceStream = new FileInputStream(file);
FileOutputStream goalStream  = new FileOutputStream("ziel.datei", false);
int c;
while ((c = sourceStream.read())!=-1)
{
    goalStream.write(c);
}
...

Aber ich habe den Verdacht, das ich da irgendwie doch falsch liege, da bei bestimmten Zeichen offenbar in Fragezeichen (?) gewandelt werden.
Was muss stattdessen getan werden? damit jedes Bit der Zieldatei identisch mit dem Original ist?
 
Hi,

Du solltest auch byte - weise und nicht int - weise einlesen....

Code:
InputStream in = new FileInputStream( File);
FileOutputStream out = new FileOutputStream("ziel.datei", false);
		
byte[] b = new byte[ 128];
		
while( 0<in.read( b, 0, b.length))
    out.write( b, 0 ,b.length);
		
out.close();
in.close();

hmf
 
Zuletzt bearbeitet von einem Moderator:
hmmm irgendwie drollig bezüglich der Doku, dort geht es offiziell auch nur um bytes, die man liest bzw. schreibt wenn man read(int) und write(int) verwendet.
das irritiert mich jetzt ein wenig.:confused:
 
ahh interessanter Thread, danke.
ich habe allerdings nun meinen Irrtum gemerkt, die Routine die ich da oben hatte funktioniert doch (hätte mich auch gewundert wegen der Dokumentation) Ich hatte nur in meiner Verwirrung offenbar das falsche File angeschaut :eek:
Sorry, aber danke für die Antworten :-)
 
Zurück