Java字符流與字撙節差別與用法剖析。本站提示廣大學習愛好者:(Java字符流與字撙節差別與用法剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是Java字符流與字撙節差別與用法剖析正文
本文實例講述了Java字符流與字撙節差別與用法。分享給年夜家供年夜家參考,詳細以下:
字撙節與字符流重要的差別是他們的的處置方法
流分類:
1.Java的字撙節
InputStream是一切字節輸出流的先人,而OutputStream是一切字節輸入流的先人。
2.Java的字符流
Reader是一切讀取字符串輸出流的先人,而writer是一切輸入字符串的先人。
InputStream,OutputStream,Reader,writer都是籠統類。所以不克不及直接new
字撙節是最根本的,一切的InputStream和OutputStream的子類都是,重要用在處置二進制數據,它是按字節來處置的
但現實中許多的數據是文本,又提出了字符流的概念,它是按虛擬機的encode來處置,也就是要停止字符集的轉化
這兩個之間經由過程 InputStreamReader,OutputStreamWriter來聯系關系,現實上是經由過程byte[]和String來聯系關系
在現實開辟中湧現的漢字成績現實上都是在字符流和字撙節之間轉化不同一而形成的
在從字撙節轉化為字符流時,現實上就是byte[]轉化為String時,
public String(byte bytes[], String charsetName)
有一個症結的參數字符集編碼,平日我們都省略了,那體系就用操作體系的lang
而在字符流轉化為字撙節時,現實上是String轉化為byte[]時,
byte[] String.getBytes(String charsetName)
也是一樣的事理
至於java.io中還湧現了很多其他的流,按重要是為了進步機能和應用便利,
如:BufferedInputStream,PipedInputStream等
詳細完成
字撙節 FileInputStream FileOutputStream
字符流 FileReader FileWriter
字符流處置的單位為2個字節的Unicode字符,分離操作字符、字符數組或字符串,而字撙節處置單位為1個字節,操作字節和字節數組。所以字符流是由Java虛擬機將字節轉化為2個字節的Unicode字符為單元的字符而成的,所以它對多國說話支撐性比擬好!假如是音頻文件、圖片、歌曲,就用字撙節好點,假如是關系到中文(文本)的,用字符流好點.
一切文件的貯存是都是字節(byte)的貯存,在磁盤上保存的其實不是文件的字符而是先把字符編碼成字節,再貯存這些字節到磁盤。在讀取文件(特殊是文本文件)時,也是一個字節一個字節地讀取以構成字節序列.
字撙節可用於任何類型的對象,包含二進制對象,而字符流只能處置字符或許字符串; 2. 字撙節供給了處置任何類型的IO操作的功效,但它不克不及直接處置Unicode字符,而字符流便可以。
字撙節轉換成字符流可以用 InputSteamReader OutputStreamWriter
轉換成BufferdReader BufferedWriter 他們具有緩沖區
例如:讀取文件 從字撙節輸出到字符流輸出
界說一個字撙節:
FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 界說一個指向D:/TEXT.TXT 的字撙節 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字撙節轉換成InputStreamReader BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 轉換成帶緩存的bufferedReader
可以把讀出來的內容賦值給字符
String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){ ss += s; } FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 界說一個指向D:/TEXT.TXT 的字撙節 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字撙節轉換成InputStreamReader BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 轉換成帶緩存的bufferedReader 可以把讀出來的內容賦值給字符 String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){ ss += s; }
例如:寫入文件 從字撙節輸入到字符流輸入
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //界說一個指向D:/TEXT.TXT文件 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(s); bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close(); FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //界說一個指向D:/TEXT.TXT文件 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(s); bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close();
例程:
將字符串轉化為字撙節 #region 將字符串轉化為字撙節
/**/ /// <summary> /// 將字符串轉化為字撙節 /// </summary> /// <param name="_Source"> 字串 </param> /// <returns> 字撙節 </returns> public static byte [] String2Bytes( string strSource) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); System.IO.BinaryWriter binaryWriter = new System.IO.BinaryWriter(memoryStream); binaryWriter.Write( strSource ); byte [] buffer = memoryStream.GetBuffer(); return buffer; } #endregion
將字撙節轉化為字符串 #region 將字撙節轉化為字符串
/**/ /// <summary> /// 將字撙節轉化為字符串 /// </summary> /// <param name="bytData"> 字撙節 </param> /// <returns> 字串 </returns> public static string Bytes2String( byte [] bytData) { // 字撙節->字符串 System.IO.MemoryStream memoryStream2 = new System.IO.MemoryStream(bytData); System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(memoryStream2); string s2 = binaryReader.ReadString(); return s2; } #endregion
願望本文所述對年夜家java法式設計有所贊助。