Artikel ini menjelaskan perbedaan dan penggunaan aliran karakter Java dan aliran byte. Bagikan untuk referensi Anda, sebagai berikut:
Perbedaan utama antara aliran byte dan aliran karakter adalah metode pemrosesannya
Klasifikasi Stream:
1. Aliran byte Java
InputStream adalah leluhur dari semua aliran input byte, sedangkan outputstream adalah leluhur dari semua aliran output byte.
2. Stream Karakter Java
Pembaca adalah leluhur dari semua aliran input string baca, sedangkan penulis adalah leluhur dari semua string output.
InputStream, OutputStream, Reader, dan Writer adalah semua kelas abstrak. Jadi Anda tidak bisa hanya baru
Aliran byte adalah yang paling mendasar. Semua subkelas InputStream dan OutputStream terutama digunakan untuk memproses data biner. Mereka diproses oleh byte, tetapi dalam kenyataannya, banyak data adalah teks. Konsep aliran karakter diusulkan. Mereka diproses sesuai dengan encode mesin virtual, yaitu, untuk mengonversi set karakter. Keduanya terkait melalui InputStreamReader dan OutputStreamWriter, dan sebenarnya terkait melalui byte [] dan String.
Masalah karakter Cina yang muncul dalam perkembangan aktual sebenarnya disebabkan oleh konversi yang tidak konsisten antara aliran karakter dan aliran byte.
Saat mengonversi dari aliran byte ke aliran karakter, itu sebenarnya ketika byte [] dikonversi menjadi string.
string publik (byte bytes [], string charsetname)
Ada parameter kunci set pengkodean karakter, yang biasanya kami hilangkan, jadi sistem menggunakan sistem operasi lang
Ketika aliran karakter dikonversi menjadi aliran byte, itu sebenarnya ketika string dikonversi menjadi byte [],
byte [] string.getbytes (string charsetName)
Hal yang sama berlaku untuk banyak aliran lain di java.io, terutama untuk meningkatkan kinerja dan menggunakan kenyamanan.
Seperti: bufferedInputStream, PipedInputStream, dll.
Implementasi spesifik
Byte stream FileInputStream FileOutputStream
Karakter Streaming FileWriter FileReader
Unit pemrosesan aliran karakter adalah 2 byte unicode karakter, yang mengoperasikan karakter, array karakter atau string masing -masing, sedangkan unit pemrosesan aliran byte adalah 1 byte, yang mengoperasikan array byte dan byte. Oleh karena itu, aliran karakter terdiri dari mesin virtual Java yang mengubah byte menjadi 2 byte karakter unicode, sehingga lebih mendukung untuk berbagai bahasa! Jika itu adalah file audio, gambar, atau lagu, gunakan streaming byte, dan jika terkait dengan Cina (teks), gunakan streaming karakter.
Semua file disimpan dalam byte. Apa yang dipertahankan pada disk bukanlah karakter file, tetapi karakter dikodekan menjadi byte terlebih dahulu, dan kemudian byte disimpan di disk. Saat membaca file (terutama file teks), mereka juga dibaca byte byte untuk membentuk urutan byte.
Aliran byte dapat digunakan untuk semua jenis objek, termasuk objek biner, sedangkan aliran karakter hanya dapat memproses karakter atau string; 2. Aliran byte menyediakan fungsi penanganan semua jenis operasi IO, tetapi tidak dapat secara langsung memproses karakter unicode, sementara aliran karakter dapat melakukannya.
Aliran byte dapat dikonversi menjadi aliran karakter menggunakan inputsteamReader outputStreamWriter
Konversi ke BufferDreader BufferedWriter Mereka memiliki buffer misalnya: Baca file dari input aliran byte ke input aliran karakter Tentukan aliran byte:
FileInputStream FileInputStream = FileInputStream baru ("d: /text.txt"); // Tentukan aliran byte yang menunjuk ke d: /text.txt inputStreamReader inputStreamReader = new InputStreAderer (FileInputReMereder); // Convert streaming BYTE BYTE INPUTREADREADERER (FileInputReDerReMered); BufferedReader (InputSteamReader); // InputStreamReader dikonversi menjadi bufferedReader dengan cacheAnda dapat menetapkan konten baca ke karakter
String ss = string baru (); string s; while ((s = bufferedReader.readline ())! = Null) {ss += s;} fileInputStream fileInputStream = new fileInputStream ("d: /text.txt"); // Tentukan aliran byte yang menunjuk ke d: /text.txt inputStreamReader inputStreamReader = inputStreamReader baru (fileInputStream); // Konversi aliran byte ke InputStreamReader bufferedReader bufferedReader = new BufferedReader (inputSteamReader); // InputStreamReader dikonversi menjadi bufferedreader dengan cache. Anda dapat menetapkan konten yang dibaca ke string karakter ss = string baru (); String s; while ((s = bufferedreader.readline ())! = null) {ss += s; }Misalnya: Tulis file dari aliran byte ke output stream karakter
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");//Define a file pointing to D:/TEXT.TXT OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);BufferedWriter bufferedWriter = new BufferedWriter (outputStreamWriter); bufferedwriter.write (s); bufferedwriter.close (); outputStreamWriter.close (); FileOutputStream FileOutputStream = baru fileOutputStream ("d: /text.txt"); //Define a file pointing to D:/TEXT.TXT OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);bufferedWriter.write(s);bufferedWriter.close();outputStreamWriter.close();fileOutputStream.close();Rutin:
Konversi string ke aliran byte#region convert string menjadi byte streams
/**//// <summary> //// Konversi string menjadi stream byte /// </summary> /// <param name = "_ source"> string </param> // <returns> stream byte </eturns> public static byte [] string2bytes (string strsource) {System.io.memorystream [] string2bytes (string strsource) {System.io.memorystream [] string2bytes (string strsource) {System.io.memorystreamsorstreamStream = SystyReam = SystyReam. System.io.BinaryWriter BinaryWriter = System.io.BinaryWriter baru (Memorystream); BinaryWriter.Write (Strsource); byte [] buffer = memorystream.getBuffer (); Buffer return;}#EndregionKonversi aliran byte ke string #region convert byte stream ke string
/**//// <summary> //// Konversi stream byte menjadi string /// </summary> /// <param name = "bytdata"> byte stream </param> /// <returns> string </returns> public string bytes2string (byte [] bytdata) {///byteam-byteam- Systes.mory (byte [] bytdata) {///byteam-byteMory- Sistemeam. System.io.memorystream (bytdata); System.io.binaryReader BinaryReader = new System.io.binaryReader (MemoryStream2); String S2 = BinaryReader.ReadString (); return s2;}#endregionSaya harap artikel ini akan membantu pemrograman Java semua orang.