Heim >Java >JavaBase >Was tun, wenn der Datenausgabestream verstümmelt ist?

Was tun, wenn der Datenausgabestream verstümmelt ist?

藏色散人
藏色散人Original
2023-01-05 11:28:5330716Durchsuche

Lösung für verstümmelten Datenausgabestream: 1. Schreiben Sie einen String über „dos.write(“....getBytes());“ 2. Setzen Sie „new OutputStreamWriter(new FileOutputStream(file), „utf-8“); „Das ist es.

Was tun, wenn der Datenausgabestream verstümmelt ist?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Java Version 8.0, Dell G3-Computer.

Was soll ich tun, wenn der Datenausgabestream verstümmelt ist?

Das Problem der verstümmelten Zeichen von DataOutputStream lösen

Ich werde diese Grube zuerst meiden und die wichtigen Dinge dreimal sagen!

Verwenden Sie niemals die writeBytes-Methode von DataOutputStream.

Verwenden Sie niemals die writeBytes-Methode von DataOutputStream.

Verwenden Sie niemals die writeBytes-Methode von DataOutputStream Ich werde drei Methoden sehen ?

Klicken Sie rein, um die Implementierung zu sehen

public final void writeBytes(String s)
public final void writeChars(String s)
public final void writeUTF(String str)
Bruder, dieser char-Typ wurde zwangsweise in den Byte-Typ konvertiert und die Genauigkeit ist verloren gegangen, also seien Sie nicht gierig nach Bequemlichkeit Wenn Sie es verwenden, ändern Sie es ehrlich. Es ist alles gut.

DataOutputStream schreibt TXT-Dateidaten mit verstümmelten Zeichen. Das ist normal. Verwenden Sie DataInputStream, um es auszulesen. Wenn Sie nur den Erfolg beibehalten möchten, benötigen Textdateien direkt FileOutputStream oder PrintWriter
File file = new File("d:"+File.separator+"test.txt");
   DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
   dos.writeBytes("你好");
   dos.writeChars("你好");
   dos.writeUTF("你好");
   dos.flush();
   dos.close();
   
   DataInputStream dis = new DataInputStream(new FileInputStream(file));
   byte[] b = new byte[2];
   dis.read(b);
            //  `}
   System.out.println(new String(b, 0, 2));
   
   char[] c = new char[2];
   for (int i = 0; i < 2; i++) {
    c[i] = dis.readChar();
   }
            //你好
   System.out.println(new String(c, 0, 2));
   //你好
   System.out.println(dis.readUTF());

Der Hauptgrund ist, dass die Codierungsmethode unterschiedlich ist. Verwenden Sie einen Zeichenstrom anstelle eines Bytestroms Die BufferedReader-Klasse liest Text aus dem Zeicheneingabestream und puffert die Zeichen für ein effizientes Lesen von Zeichen, Arrays und Zeilen

Empfohlenes Lernen: „
Java Video Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn der Datenausgabestream verstümmelt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn