package org.lxh.demo12.byteiodemo; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class OutputStreamDemo05 { public static void main(String[] args) throws Exception { // 異常拋出, 不處理 // 第1步:使用File類找到一個文件 File f = new File("d:" + File.separator + "test.txt"); // 聲明File 對象 // 第2步:經過子類實例化父類對象 OutputStream out = null; // 準備好一個輸出的對象 out = new FileOutputStream(f); // 經過對象多態性進行實例化 // 第3步:進行寫操做 String str = "Hello World!!!"; // 準備一個字符串 byte b[] = str.getBytes(); // 字符串轉byte數組 out.write(b); // 將內容輸出 // 第4步:關閉輸出流 // out.close(); // 此時沒有關閉 } }
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class WriterDemo03 { public static void main(String[] args) throws Exception { // 異常拋出, 不處理 // 第1步:使用File類找到一個文件 File f = new File("d:" + File.separator + "test.txt");// 聲明File 對象 // 第2步:經過子類實例化父類對象 Writer out = null; // 準備好一個輸出的對象 out = new FileWriter(f); // 經過對象多態性進行實例化 // 第3步:進行寫操做 String str = "Hello World!!!"; // 準備一個字符串 out.write(str); // 將內容輸出 // 第4步:關閉輸出流 // out.close(); // 此時沒有關閉 } }
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class WriterDemo04 { public static void main(String[] args) throws Exception { // 異常拋出不處理 // 第1步:使用File類找到一個文件 File f = new File("d:" + File.separator + "test.txt");// 聲明File 對象 // 第2步:經過子類實例化父類對象 Writer out = null; // 準備好一個輸出的對象 out = new FileWriter(f); // 經過對象多態性進行實例化 // 第3步:進行寫操做 String str = "Hello World!!!"; // 準備一個字符串 out.write(str); // 將內容輸出 out.flush(); // 強制性清空緩衝區中的內容 // 第4步:關閉輸出流 // out.close(); // 此時沒有關閉 } }
字節流與字符流主要的區別是他們的的處理方式 字節流是最基本的,採用ASCII編碼,全部的InputStream和OutputStream的子類都是,主要用在處理二進制數據,它是按字節來處理的 但實際中不少的數據是文本,又提出了字符流的概念,採用Unicode編碼.它是按虛擬機的encode來處理,也就是要進行字符集的轉化 這兩個之間經過 InputStreamReader,OutputStreamWriter來關聯,其實是經過byte[]和String來關聯 你只要把java處理字節流和字符流的類搞清楚就好了! 字節流 字符流 輸入 InputStream Reader 輸出 OutputStream Writer 其它的類都是繼承這四個基本類的!在從字節流轉化爲字符流時,實際上就是byte[]轉化爲String時, public String(byte bytes[], String charsetName) 有一個關鍵的參數字符集編碼,一般咱們都省略了,那系統就用操做系統的lang 而在字符流轉化爲字節流時,其實是String轉化爲byte[]時, byte[] String.getBytes(String charsetName) 也是同樣的道理 至於java.io中還出現了許多其餘的流,按主要是爲了提升性能和使用方便, 如BufferedInputStream,PipedInputStream等