java 字節流轉字符流


1.文本是一種16位無符號整數,是字符unicode編碼(雙字節編碼).

2.文件時byte byte byte ...的數據序列。

3.文本文件是 文本(char)序列按照某種編碼方案(utf-8,gbk)序列化爲byte的存儲結果。


4. 字符流:(reader Writer)  輸出/輸入流、-------操作是文本文件

  字符處理:一次處理一個字符。

InputStreamReader  完成文件(byte)流解析爲文本(char)流,按照編碼解析


OutputStreamWriter  提供文本(char) 流到文件(byte)流,按照編碼處理.

package cn.lanz.stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class IsrAndOswDemo {
	public static void main(String[] args) throws IOException {
		
		FileInputStream in=new FileInputStream("e:\\javaio\\lanz.txt");
		
		InputStreamReader isr=new InputStreamReader(in);//轉爲字符流
		
		FileOutputStream out=new FileOutputStream("e:\\javaio\\lanzs.txt");
		OutputStreamWriter osw=new OutputStreamWriter(out, "utf-8");
		
	/*	int c;
		if((c=isr.read())!=-1){
			System.out.println((char)c);
		}*/
		
		char[] buffer=new char[8*1024];
		int a;
		while((a=isr.read(buffer,0,buffer.length))!=-1){
			String s=new String(buffer,0,a);
			System.out.println(s);
			osw.write(buffer, 0, a);
			osw.flush();
		}
		
		osw.close();
		out.close();
		isr.close();
		in.close();
	}
}


package cn.lanz.stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class IsrAndOswDemo {
	public static void main(String[] args) throws IOException {
		
		FileInputStream in=new FileInputStream("e:\\javaio\\lanz.txt");
		
		InputStreamReader isr=new InputStreamReader(in);//轉爲字符流
	/*	int c;
		if((c=isr.read())!=-1){
			System.out.println((char)c);
		}*/
		
		char[] buffer=new char[8*1024];
		int a;
		while((a=isr.read(buffer,0,buffer.length))!=-1){
			String s=new String(buffer,0,a);
			System.out.println(s);
		}
		
		isr.close();
		in.close();
	}
}

5.FileReader   /  FileWriter

package cn.lanz.stream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileRAndFileW {
	public static void main(String[] args) throws IOException {
		FileReader fr=new FileReader("e:\\javaio\\lanz.txt");//讀取
		
		FileWriter fw=new FileWriter("e:\\javaio\\lanzs.txt",true);//寫入 ,如果爲 true,則將數據寫入文件末尾處(追加),而不是寫入文件開始處。
		
		char[] buffer=new char[2056];
		
		int c;
		while((c=fr.read(buffer, 0, buffer.length))!=-1){
			fw.write(buffer, 0, c);
			fw.flush();
		}
		
		fw.close();
		fr.close();
	}
}

6.字符流過濾器

 1.BufferedReader   ------readLine  一次讀取一行

  2.BufferedWriter/PrintWriter  ---寫一行


package cn.lanz.stream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class BrAndBwOrPw {
	public static void main(String[] args) throws IOException {
		//對文件進行讀寫操作
		BufferedReader br=new BufferedReader(new InputStreamReader
				(new FileInputStream("e:\\javaio\\lanz.txt")));//讀取
		
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter
				(new FileOutputStream("e:\\javaio\\lanzs.txt")));//寫入
		
		
		//PrintWriter pw=new PrintWriter("e:\\javaio\\lanzs.txt");//寫入,方便
		
		String line;
		while((line=br.readLine())!=null){
			bw.write(line);
			//單獨寫出換行操作
			bw.newLine();
			bw.flush();
			
//			pw.print(line);//加了ln就是換行
//			pw.flush();
		}
		bw.close();
		br.close();
	}
}


發佈了88 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章