您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第三季学习笔记-IO之字节字符转换流
发布时间:2017-08-10 15:11:44编辑:雪饮阅读()
转换流概述
转换流,可以将一个字节流转换为字符流,也可以将一个字符流转换为字节流。
OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式
InputStreamReader:将输入的字节流转换为字符流输入形式
OutputStreamWriter
public class OutputStream Writer
extends Writer
OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
InputStreamReader
public class InputStreamReader
extends Reader
InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
字符转换流结构图:
示例代码:使用转换流,把字符流转换成字节流输出
package com.vince.convertstream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class Convertstream {
/**
* 使用转换流,把字符流转换成字节流输出
*/
public static void writer(){
//构造一个字节输出流
String filePath="E:"+File.separator+"duminjie_love_gaojiupan"+File.separator+"BaiduNetdiskDownload.txt";
try {
OutputStream out = new FileOutputStream(filePath);
String info="着一笠烟雨静候天光破云,聆三清妙音也号如是我闻,翻手反排命格 ,覆手复立乾坤,为道为僧 又何必区分,霜花剑上雕镂一缕孤韧,踏遍千山涤荡妖魁魔魂,少年一事能狂 ,敢骂天地不仁,才不管机缘还是祸根,醉极弹歌一场 ,梦与我孰为真,不能忘情徒惹得心困,仙路看近行远 ,霖林雨雪纷纷,寂寥也不妨笑面对人,着一笠烟雨静候天光破云,聆三清妙音也号如是我闻,翻手反排命格 ,覆手复立乾坤,为道为僧 ,又何必区分,霜花剑上雕镂一缕孤韧,踏遍千山涤荡妖魁魔魂,少年一事能狂 ,敢骂天地不仁,才不管机缘还是祸根,醉极弹歌一场 ,梦与我孰为真,不能忘情徒惹得心困,仙路看近行远 ,霖林雨雪纷纷,寂寥也不妨笑面对人,醉极弹歌一场 ,梦与我孰为真,不能忘情徒惹得心困,仙路看近行远 ,霖林雨雪纷纷,寂寥也不妨笑面对人";
//通过字节输出流构造一个字符输出流
Writer writer=new OutputStreamWriter(out);
//输出
writer.write(info);
//关闭流
writer.close();
out.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
writer();
}
}
示例代码:使用转换流,把字节流转换成字符流输出
package com.vince.convertstream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class Convertstream {
/**
* 使用转换流,把字节流转换成字符流输出
*/
public static void reader(){
String filePath="E:"+File.separator+"duminjie_love_gaojiupan"+File.separator+"BaiduNetdiskDownload.txt";
try {
//构造字节输入流
InputStream in = new FileInputStream(filePath);
//通过字节输入流构造一个字符输入流
Reader reader=new InputStreamReader(in);
char[] cs=new char[50];
int len=-1;
StringBuilder sb=new StringBuilder();
while((len=reader.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
//关闭流
reader.close();
in.close();
System.out.println(sb);
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) {
reader();
}
}
关键字词:javase,io,字符转换流