บทความนี้อธิบายถึงความแตกต่างและการใช้สตรีมตัวละคร Java และสตรีมไบต์ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ความแตกต่างที่สำคัญระหว่างสตรีมไบต์และสตรีมอักขระคือวิธีการประมวลผลของพวกเขา
การจำแนกประเภทสตรีม:
1. สตรีมไบต์ของ Java
InputStream เป็นบรรพบุรุษของสตรีมอินพุตไบต์ทั้งหมดในขณะที่ OutputStream เป็นบรรพบุรุษของสตรีมเอาต์พุตไบต์ทั้งหมด
2. สตรีมตัวละคร Java
ผู้อ่านเป็นบรรพบุรุษของสตรีมอินพุตสตริงการอ่านทั้งหมดในขณะที่นักเขียนเป็นบรรพบุรุษของสตริงเอาต์พุตทั้งหมด
InputStream, OutputStream, Reader และ Writer เป็นคลาสนามธรรมทั้งหมด ดังนั้นคุณไม่สามารถใหม่ได้
สตรีมไบต์เป็นพื้นฐานที่สุด คลาสย่อยทั้งหมดของอินพุตสตรีมและเอาท์พุทสตรีมส่วนใหญ่จะใช้เพื่อประมวลผลข้อมูลไบนารี พวกเขาถูกประมวลผลโดยไบต์ แต่ในความเป็นจริงข้อมูลจำนวนมากเป็นข้อความ เสนอแนวคิดของสตรีมตัวละคร พวกเขาจะถูกประมวลผลตามการเข้ารหัสของเครื่องเสมือนนั่นคือเพื่อแปลงชุดอักขระ ทั้งสองเกี่ยวข้องผ่าน InputStreamReader และ OutputStreamWriter และมีความสัมพันธ์จริงผ่านไบต์ [] และสตริง
ปัญหาตัวละครของจีนที่เกิดขึ้นในการพัฒนาที่เกิดขึ้นจริงนั้นเกิดจากการแปลงที่ไม่สอดคล้องกันระหว่างสตรีมอักขระและสตรีมไบต์
เมื่อแปลงจากสตรีมไบต์เป็นสตรีมอักขระมันเป็นจริงเมื่อไบต์ [] ถูกแปลงเป็นสตริง
สตริงสาธารณะ (ไบต์ไบต์ [], สตริง charsetName)
มีการเข้ารหัสชุดอักขระพารามิเตอร์คีย์ซึ่งเรามักจะละเว้นดังนั้นระบบจึงใช้ระบบปฏิบัติการ Lang
เมื่อสตรีมอักขระถูกแปลงเป็นสตรีมไบต์มันเป็นจริงเมื่อสตริงถูกแปลงเป็นไบต์ []
byte [] string.getBytes (สตริง charsetName)
เช่นเดียวกับสตรีมอื่น ๆ ใน java.io ส่วนใหญ่เพื่อปรับปรุงประสิทธิภาพและใช้ความสะดวก
เช่น: BufferedInputStream, PipedInputStream ฯลฯ
การใช้งานเฉพาะ
Byte Stream FileInputStream FileOutputStream
ตัวอักษรสตรีมมิ่ง filereader filewriter
หน่วยของการประมวลผลสตรีมอักขระคืออักขระ Unicode 2 ไบต์ซึ่งดำเนินการอักขระอาร์เรย์อักขระหรือสตริงตามลำดับในขณะที่หน่วยของการประมวลผลสตรีมไบต์คือ 1 ไบต์ซึ่งทำงานอาร์เรย์ไบต์และไบต์ ดังนั้นสตรีมอักขระจึงประกอบด้วยเครื่องเสมือน Java ที่แปลงไบต์เป็นอักขระ Unicode 2 ไบต์ดังนั้นจึงสนับสนุนหลายภาษามากขึ้น! หากเป็นไฟล์เสียงรูปภาพหรือเพลงให้ใช้การสตรีมไบต์และหากเกี่ยวข้องกับภาษาจีน (ข้อความ) ให้ใช้การสตรีมอักขระ
ไฟล์ทั้งหมดจะถูกเก็บไว้ในไบต์ สิ่งที่เก็บไว้ในดิสก์ไม่ใช่อักขระของไฟล์ แต่ตัวละครจะถูกเข้ารหัสลงในไบต์ก่อนจากนั้นไบต์จะถูกเก็บไว้ในดิสก์ เมื่ออ่านไฟล์ (โดยเฉพาะไฟล์ข้อความ) พวกเขาจะอ่านไบต์ไบต์เพื่อสร้างลำดับของไบต์
สตรีมไบต์สามารถใช้สำหรับวัตถุทุกประเภทรวมถึงวัตถุไบนารีในขณะที่สตรีมอักขระสามารถประมวลผลอักขระหรือสตริงได้เท่านั้น 2. สตรีมไบต์ให้ฟังก์ชั่นการจัดการการทำงานของ IO ทุกประเภท แต่ไม่สามารถประมวลผลอักขระ Unicode โดยตรงในขณะที่สตรีมอักขระสามารถทำได้
สตรีมไบต์สามารถแปลงเป็นสตรีมอักขระโดยใช้ inputsteamreader outputStreamWriter
แปลงเป็น bufferDreader bufferedWriter พวกเขามีบัฟเฟอร์ตัวอย่างเช่น: อ่านไฟล์จากอินพุตสตรีมไบต์ไปยังอินพุตสตรีมอักขระกำหนดสตรีมไบต์:
FileInputStream FileInputStream = ใหม่ FileInputStream ("D:/text.txt"); // กำหนดไบต์สตรีมที่ชี้ไปที่ d:/text.txt inputStreamReader inputStreamReader = new InputStreamReader (fileInputStream); เพื่อ bufferedReader ด้วยแคชคุณสามารถกำหนดเนื้อหาการอ่านให้กับอักขระ
สตริง ss = สตริงใหม่ (); สตริง s; ในขณะที่ ((s = bufferedreader.readline ())! = null) {ss += s;} fileInputStream fileInputStream = new FileInputStream ("D:/text.txt"); // กำหนดสตรีมไบต์ชี้ไปที่ d:/text.txt inputstreamreader inputstreamreader = new InputStreamReader (fileInputStream); // แปลงไบต์สตรีมเป็น inputStreamReader bufferedReader bufferedReader = ใหม่ bufferedReader (inputsteamreader); // InputStreamReader จะถูกแปลงเป็น bufferedReader ด้วยแคช คุณสามารถกำหนดเนื้อหาการอ่านให้กับสตริงอักขระ ss = new String (); สตริง s; ในขณะที่ ((s = bufferedreader.readline ())! = null) {ss += s; -ตัวอย่างเช่น: เขียนไฟล์จากสตรีมไบต์ไปยังเอาต์พุตสตรีมอักขระ
fileOutputStream fileOutputStream = ใหม่ fileOutputStream ("d:/text.txt"); // กำหนดไฟล์ชี้ไปที่ d:/text.txt outputStreamWriter OutputStreamWriter = new OutputStreamWriter bufferedWriter (OutputStreamWriter); bufferedWriter.Write (s); bufferedWriter.close (); outputStreamWriter.close (); fileOutputStream fileOutputStream = ใหม่ fileOutputStream ("d:/text.txt"); // กำหนดไฟล์ชี้ไปที่ d:/text.txt outputStreamWriter outputStreamWriter = new OutputStreamWriter (fileOutputStream); bufferedWriter bufferedWriter = bufferedWriter ใหม่ (outputStreamWriter); bufferedWriter.writeกิจวัตรประจำวัน:
แปลงสตริงเป็นไบต์สตรีม#ภูมิภาคแปลงสตริงเป็นไบต์สตรีม
/**//// <summary> /////แปลงสตริงเป็นสตรีมไบต์ /// </summary> /// <param name = "_ แหล่งที่มา"> สตริง </param> /// <tretmars> byte stream </returns> byte static public stress.memorystream (string2bytes System.io.binaryWriter BinaryWriter = ใหม่ System.io.BinaryWriter (MemoryStream); binaryWriter.write (strSource); ไบต์ [] buffer = memorystream.getBuffer (); return buffer;}#endregion
แปลงสตรีมไบต์เป็นสตริง #REGION แปลงสตรีมไบต์เป็นสตริง
/**//// <summary> /////แปลงไบต์สตรีมเป็นสตริง /// </summary> /// <param name = "bytdata"> ไบต์สตรีม </param> /// <returs> สตริง </returns> สตริงคงที่สาธารณะ System.io.memorystream (Bytdata); System.io.binaryReader BinaryReader = ใหม่ System.io.BinaryReader (MemoryStream2); สตริง s2 = binaryReader.readString (); ส่งคืน s2;}#endregion
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน