Rumah > Java > JavaAsas > teks badan

Apa yang perlu dilakukan jika aliran keluaran data bercelaru?

藏色散人
Lepaskan: 2023-01-05 11:28:53
asal
30507 orang telah melayarinya

Penyelesaian kepada aliran dataoutput yang bercelaru: 1. Tulis String melalui "dos.write("...".getBytes());"; 2. Set "new OutputStreamWriter(new FileOutputStream(file), "utf- 8");" sudah memadai.

Apa yang perlu dilakukan jika aliran keluaran data bercelaru?

Persekitaran pengendalian tutorial ini: sistem Windows 10, Java versi 8.0, komputer Dell G3.

Apakah yang perlu saya lakukan jika aliran keluaran data bercelaru?

Selesaikan masalah kod DataOutputStream bercelaru

Saya akan pijak lubang ini dahulu untuk menghormatinya, dan sebut perkara penting tiga kali!

Jangan sekali-kali gunakan kaedah writeBytes DataOutputStream

Jangan sekali-kali gunakan kaedah writeBytes DataOutputStream

Beribu-ribu Tidak pernah gunakan kaedah writeBytes DataOutputStream

Apabila kami menggunakan DataOutputStream, sebagai contoh, jika kami ingin menulis String, anda akan melihat tiga kaedah

public final void writeBytes(String s)
public final void writeChars(String s)
public final void writeUTF(String str)
Salin selepas log masuk

OK , kemudian cuba tulis kandungan yang sama dan kemudian baca semula

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());
Salin selepas log masuk

Ya, anda membacanya dengan betul, ia ditulis dengan kaedah writeBytes Apabila kandungan dibacakan, mengapa ia bercelaru?

Klik masuk untuk melihat pelaksanaan

public final void writeBytes(String s) throws IOException {
        int len = s.length();
        for (int i = 0 ; i < len ; i++) {
            out.write((byte)s.charAt(i));
        }
        incCount(len);
    }
Salin selepas log masuk

Saudara, jenis aksara ini telah ditukar secara paksa kepada jenis bait, dan ketepatannya telah hilang tidak boleh dikembalikan. Oleh itu, jangan tamak untuk kemudahan apabila menggunakannya, cuma gantikan dengan dos.write("Hello".getBytes()); 🎜>

Ini perkara biasa jika anda ingin membaca, gunakan DataInputStream untuk membaca Jika anda hanya mahu menyimpannya sebagai fail teks, gunakan FileOutputStream atau PrintWriter

<🎜. >Sebab utama ialah kaedah pengekodan berbeza
OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
oStreamWriter.append(str);
oStreamWriter.close();
Salin selepas log masuk
Gunakan strim aksara dan bukannya strim bait

Kelas BufferedReader membaca teks daripada strim input aksara dan menampan aksara untuk membaca dengan cekap. aksara, tatasusunan dan baris

Pembelajaran yang disyorkan: "

Tutorial Video Java

"

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika aliran keluaran data bercelaru?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!