Java(字节流向字符流的转化)
来源:互联网 发布:c专家编程百度云 编辑:程序博客网 时间:2024/05/16 00:59
字节流和字符流是Java提供的两种输入/输出处理方式。字节流以单个字节为读/写单位,字符流以字符为读/写单位。一般字符由多个字节组成。InputStreamReader和OutputStreamWriter用来作为字节和字符之间的中介,可以把以字节形式表示的流转化为特定平台上的字符表示。可以从一个字节流构造一个字符流对象。可以在构造这些流对象时指定字符编码规范,也可以用当前平台默认编码规划。
InputStreamReader的构造函数如下
public InputStreamReader(InputStream in)使用当前平台默认的编码规范,从字节流in构造一个字符流对象
public InputStreamReader(InputStream in,String charsetName)使用特定的字符集编码规范,从字节流in构造一个字符流对象
public InputStreamReader(InputStream in,charset cs)使用一个字符集对象cs和字节流in构造输入字符流
public InputStreamReader(InputStream in,CharasetDecoder dec)使用字符集解码器dec和字节流in构建输入字符流。
in是一个字节流对象,charsetName是字符集的名字,cs是表示字符集的对象,dec是一个字符集解码器。
如果使用了不支持的字符集,那么会产生一个UnsupportedEncodingException异常。
OutputStreamWriter
构造函数
public OutputStreamWriter(OutputStream out)使用当前平台默认的编码规范,从字节流out构造一个字符流对象
public OutputStreamWriter(OutputStream out,String charsetName)使用特定的字符集编码规范,从字节流out构造一个字符流对象
public OutputStreamWriter(OutputStream out,Charset cs)使用一个字符集对象cs和字节流out构造输出字符流
public OutputStreamWriter(OutputStream out,CharsetEncoder enc)使用字符集编码器enc和字节流out构造输出字符流
这里out是一个输出字节流对象,charsetName是字符集的名字,cs是表示字符集的对象,enc是一个字符集编码器。
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class StreamToReaderWriter { public static void main(String[] args)throws IOException { File file=new File("src/StreamToReaderWriter.java"); FileInputStream fin=new FileInputStream(file); FileOutputStream fout=new FileOutputStream("copy-of-file.txt"); InputStreamReader isr=new InputStreamReader(fin,"GBK"); OutputStreamWriter osw=new OutputStreamWriter(fout,"GBK"); System.out.println("Current charset of Reader is:"+isr.getEncoding()); System.out.println("Current charset of Writer is:"+osw.getEncoding()); int n=(int)(file.length()/30); System.out.println("First "+n+"char of the file one read() at a time"); for(int i=0;i<n;i++) { osw.write(isr.read()); } System.out.println("Reading the next "+n+"with one read(b[])"); char b[]=new char[n]; if(isr.read(b)!=n) { System.err.println("could't read "+n+"bytes."); } osw.write(b); System.out.println("Reading the rest chars with read(b[],offset,len)"); int count=0; while((count=isr.read(b, 0,n))!=-1) osw.write(b,0,count); isr.close(); fin.close(); osw.flush(); osw.close(); fout.flush(); fout.close(); }}
有问题
Exception in thread “main” java.io.FileNotFoundException: src\StreamToReaderWriter.java (系统找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.(Unknown Source)
at Main.StreamToReaderWriter.main(StreamToReaderWriter.java:14)
- Java(字节流向字符流的转化)
- 字符输入流向字节输入流的转换
- 字符输入流向字节输入流的转换
- Java中字符流与字节流的转化
- 字符与字节的转化
- Java中文件的读写及流向字符串的转化
- JAVA中字节与字符的转化接口
- Java_io_键盘录入 字符流和字节流的转化
- 字符流与字节流的相互转化
- 模拟客户端与服务器端交互--包含字符流向字节流转型的使用
- java 字符的转化
- 字符字节转化
- JAVA字节字符流
- java 字节流与字符流的区别(缓冲区)
- (转) java 字节流与字符流的区别
- Java的字符流和字节流
- Java的字符流和字节流
- Java的字节流、字符流
- Lisp语言的9种思想
- mysql显示中文乱码
- java程序员最可能遇到的面试题
- 各数据库分页查询(非DAO层框架所支持查询)
- TODO-1:数组去重方法大全
- Java(字节流向字符流的转化)
- Android6.0 Launcher3 拖拽分析
- 关于js对当前时间的处理
- jquery改变控件值
- Tomcat相关内容-总结
- ActiveMQ的Topic持久化
- 建议21:选择正确的集合
- GreenDao3的集成
- mybatis关联字表分页查询实现(物理分页)