java 字节流转字符流

来源:互联网 发布:企业域名注册 编辑:程序博客网 时间:2024/06/05 18:02


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();}}


0 0
原创粉丝点击