Die Lese- und Schreibmethoden des Dateibyte-Eingabe- und Ausgabestreams verwenden Byte-Arrays zum Lesen und Schreiben von Daten, dh zum Verarbeiten von Daten in Bytes. Daher funktionieren Bytestreams nicht gut mit Unicode -Zeichen. Beispielsweise belegt ein chinesisches Zeichen 2 Bytes in der Datei. Wenn ein Byte-Stream verwendet wird, werden bei unsachgemäßem Lesen „verstümmelte Zeichen“ angezeigt.
Den Byteströmen FileInputStream und FileOutputStream entsprechen die Zeichenströme FileReader und FileWriter (Dateizeicheneingabe- und -ausgabeströme sind Unterklassen von Reader und Writer, und ihre Konstruktionsmethoden sind:).
FileReader(Stringfilename);FileReader(Filefilename);Fi1eWriter(Stringfilename);FileWriter(Filefilename);FileWriter(Stringfilename,booleanappend);FileWriter(Filefilename,booleanappend);
Die Lese- und Schreibmethoden von Zeicheneingabeströmen und -ausgabeströmen verwenden Zeichenarrays zum Lesen und Schreiben von Daten, dh zum Verarbeiten von Daten mit Zeichen als Grundeinheit.
Zum Beispiel:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){FilesourceFile=newFile(a.txt);//Die Datei wurde gelesen FiletargetFile=newFile(b.txt);//Die Datei wurde geschrieben charc[]=newchar [19 ];//char array try{Writerout=newFileWriter(targetFile,true);//Ausgabestream, der auf das Ziel zeigt Readerin=newFileReader(sourceFile);//Eingabestream, der auf die Quelle zeigt intn=-1;while(( n= in.read(c))!=-1){out.write(c,0,n);}out.flush();out.close();}catch(IOExceptione){System.out.println (Fehler +e);}}}
Hinweis : Bei Writer-Streams schreibt die Schreibmethode zuerst Daten in den Puffer, der Inhalt des Puffers wird automatisch in das Ziel geschrieben. Wenn der Stream geschlossen ist, wird der Inhalt des Puffers sofort in das Ziel geschrieben . Der Stream ruft die Methode „flush()“ auf, um den aktuellen Puffer sofort zu leeren, d. h. den Inhalt des aktuellen Puffers in das Ziel zu schreiben.