InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。
一、InputStreamReader類
InputStreamReader 將字節流轉換為字符流。是字節流通向字符流的橋梁。假設不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。
構造方法:
InputStreamReader isr = new InputStreamReader(InputStream in);//構造一個默認編碼集的InputStreamReader類
InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//構造一個指定編碼集的InputStreamReader類。
參數 in對象通過 InputStream in = System.in;獲得。//讀取鍵盤上的數據。
????????????????????????????????或者? ? InputStream in = new FileInputStream(String fileName);//讀取文件里的數據。能夠看出FileInputStream 為InputStream的子類。
主要方法:int read();//讀取單個字符。
????????????????? int read(char []cbuf);//將讀取到的字符存到數組中。返回讀取的字符數。
public static void transReadNoBuf() throws IOException {/*** 沒有緩沖區,僅僅能使用read()方法。*///讀取字節流 // InputStream in = System.in;//讀取鍵盤的輸入。InputStream in = new FileInputStream("D:\\demo.txt");//讀取文件的數據。//將字節流向字符流的轉換。要啟用從字節到字符的有效轉換,能夠提前從底層流讀取很多其它的字節.InputStreamReader isr = new InputStreamReader(in);//讀取 // InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//綜合到一句。char []cha = new char[1024];int len = isr.read(cha);System.out.println(new String(cha,0,len));isr.close();}public static void transReadByBuf() throws IOException {/*** 使用緩沖區 能夠使用緩沖區對象的 read() 和 readLine()方法。*///讀取字節流 // InputStream in = System.in;//讀取鍵盤上的數據InputStream in = new FileInputStream("D:\\demo.txt");//讀取文件上的數據。//將字節流向字符流的轉換。InputStreamReader isr = new InputStreamReader(in);//讀取//創建字符流緩沖區BufferedReader bufr = new BufferedReader(isr);//緩沖 // BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));能夠綜合到一句。/* int ch =0;ch = bufr.read();System.out.println((char)ch);*/String line = null;while((line = bufr.readLine())!=null){System.out.println(line);}isr.close();}
?
二、OutputStreamWriter類
OutputStreamWriter 將字節流轉換為字符流。是字節流通向字符流的橋梁。假設不指定字符集編碼,該解碼過程將使用平臺默認的字符編碼,如:GBK。
構造方法:
OutputStreamWriter osw = new OutputStreamWriter(OutputStream out);//構造一個默認編碼集的OutputStreamWriter類
OutputStreamWriter?osw = new OutputStreamWriter(OutputStream out,String charsetName);//構造一個指定編碼集的OutputStreamWriter類。
參數 out對象通過 InputStream?out = System.out;獲得。//打印到控制臺上。
?????????????????????????????? 或者? ? InputStream?out = new FileoutputStream(String fileName);//輸出到文件里。能夠看出FileoutputStream 為outputStream的子類。
主要方法:void write(int c);//將單個字符寫入。
??????????????????viod write(String str,int off,int len);//將字符串某部分寫入。
????????????????? void flush();//將該流中的緩沖數據刷到目的地中去。
?
public static void transWriteNoBuf() throws IOException {OutputStream out = System.out;//打印到控制臺 // OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//兩句能夠綜合到一句。 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch);String str = "你好嗎?";//你好嗎?osr.write(str);osr.flush();osr.close();}public static void transWriteByBuf() throws IOException { // OutputStream out = System.out;//打印到控制臺。OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//綜合到一句。BufferedWriter bufw = new BufferedWriter(osr);//緩沖 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch);String str = "你好嗎?\r\n我非常好!";//你好嗎?bufw.write(str);bufw.flush();bufw.close();}?流轉換程序1:
package IOtest;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter;public class TransStreamtest {/*** 基本的類: in1, InputStream* 創建對象 InputStream in = System.in;* in2, InputStreamReader 沒有readLine()方法* 主要方法:* read()讀取單個字符,一個漢字也為一個字符。* read(char[] cbuf)將字符讀入數組。* close().關閉此流和相關聯資源。* in3, BufferedReader 有read(),readLine()方法。* out1, OutputStream* 創建對象 OutputStream in = System.out;* out2, OutputStreamWriter * 主要方法:* write(int c)//寫入單個字符。* write(char[] cbuf,int off,int len)//寫入數組的某一部分* write(String str,int off,int len)//寫入字符串煩人某一部分。* flush();//刷新該流中的緩沖。* close();* out3, BufferedWriteer 有Write(int ch),newLine()方法。* * * @throws IOException */public static void main(String[] args) throws IOException { // transReadByBuf(); // transReadNoBuf();transWriteNoBuf(); // transWriteByBuf();}public static void transWriteNoBuf() throws IOException {OutputStream out = System.out;//打印到控制臺 // OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//兩句能夠綜合到一句。 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch);String str = "你好嗎?";//你好嗎?osr.write(str);osr.flush();osr.close();}public static void transWriteByBuf() throws IOException { // OutputStream out = System.out;//打印到控制臺。OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。OutputStreamWriter osr = new OutputStreamWriter(out);//輸出 // OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//綜合到一句。BufferedWriter bufw = new BufferedWriter(osr);//緩沖 // int ch = 97;//a // int ch = 20320;//你 // osr.write(ch);String str = "你好嗎?\r\n我非常好!";//你好嗎?bufw.write(str);bufw.flush();bufw.close();}public static void transReadNoBuf() throws IOException {/*** 沒有緩沖區,僅僅能使用read()方法。*///讀取字節流 // InputStream in = System.in;//讀取鍵盤的輸入。InputStream in = new FileInputStream("D:\\demo.txt");//讀取文件的數據。//將字節流向字符流的轉換。要啟用從字節到字符的有效轉換,能夠提前從底層流讀取很多其它的字節.InputStreamReader isr = new InputStreamReader(in);//讀取 // InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//綜合到一句。char []cha = new char[1024];int len = isr.read(cha);System.out.println(new String(cha,0,len));isr.close();}public static void transReadByBuf() throws IOException {/*** 使用緩沖區 能夠使用緩沖區對象的 read() 和 readLine()方法。*///讀取字節流 // InputStream in = System.in;//讀取鍵盤上的數據InputStream in = new FileInputStream("D:\\demo.txt");//讀取文件上的數據。//將字節流向字符流的轉換。InputStreamReader isr = new InputStreamReader(in);//讀取//創建字符流緩沖區BufferedReader bufr = new BufferedReader(isr);//緩沖 // BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));能夠綜合到一句。/* int ch =0;ch = bufr.read();System.out.println((char)ch);*/String line = null;while((line = bufr.readLine())!=null){System.out.println(line);}isr.close();} }?流轉換程序2:
package readKey;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter;public class TransStreamDemo3 {/*** @param args* @throws IOException */public static void main(String[] args) throws IOException { // writeText_1(); // writeText_2(); // writeText_3(); // ReadTest_1(); // ReadTest_2(); // ReadTest_3();} public static void ReadTest_3() throws IOException {InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"UTF-8");char []ch = new char[20];int len = isr.read(ch);System.out.println(new String(ch,0,len) );isr.close(); }public static void ReadTest_2() throws IOException {InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"GBK");char []ch = new char[20];int len = isr.read(ch);System.out.println(new String(ch,0,len) );isr.close(); }public static void ReadTest_1() throws IOException {FileReader fr = new FileReader("D:\\demo.txt");char []ch = new char[20];int len = fr.read(ch);System.out.println(new String(ch,0,len) );fr.close(); }public static void writeText_3() throws IOException {OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\utf-8.txt"),"UTF-8");osw.write("你好嗎");osw.close(); }public static void writeText_2() throws IOException {FileWriter fw = new FileWriter("D:\\gbk1.txt");fw.write("你好啊");fw.close();}public static void writeText_1() throws IOException {OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\gbk.txt"),"GBK");/**和上面的等同 * FileWriter fw = new FileWriter("D:\\gbk1.txt");* 操作文件的字節流 + 默認的編碼表*/osw.write("你好嗎");osw.close();} }
?
總結
以上是生活随笔為你收集整理的InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 侧边菜单栏 android-menudr
- 下一篇: 安装完SqlServer2008,wam