java 21 - 2 字符输出流

字符输出流:OutputStreamWriter

构造方法:一共4个,说2个常用的

A:OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流(eclise默认的是GBK编码表)

B:OutputStreamWriter(OutputStream out,String charsetName):根据指定编码把字节流数据转换为字符流

 

A:OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流

1         OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
2                 "a.txt"));
3         out.write("中国是我们de祖国");
4         
5         out.close();

 

B:OutputStreamWriter(OutputStream out,String charsetName):根据指定编码把字节流数据转换为字符流

1         OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
2                 "osw.txt"), "UTF-8"); // 指定UTF-8
3         // 写数据
4         osw.write("中国是我们的祖国");
5 
6         // 释放资源
7         osw.close();

 

字符输出流的方法:

A* public void write(int c):写一个字符
B* public void write(char[] cbuf):写一个字符数组
C* public void write(char[] cbuf,int off,int len):写一个字符数组的一部分
D* public void write(String str):写一个字符串
E* public void write(String str,int off,int len):写一个字符串的一部分

首先创建个字符输出流对象

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
                "osw.txt"));

 

A* public void write(int c):写一个字符

osw.write('a');//看到的是a
osw.write(97);//这个看到的是W,因为这个是字符流,会根据编码表自动寻找值所对应的字符

 

B* public void write(char[] cbuf):写一个字符数组

1  char[] chs = {'a','b','c','d','e'};
2          osw.write(chs);

 

C* public void write(char[] cbuf,int off,int len):写一个字符数组的一部分

1 osw.write(chs,1,3);

 

D* public void write(String str):写一个字符串

osw.write("我爱睡觉");


E* public void write(String str,int off,int len):写一个字符串的一部分

osw.write("我爱睡觉", 2, 3);

 

注意:字符流有个跟字节流不同的类似xxx.close()的方法:xxx.flush();

那么,close()和flush()的区别呢:

A:close()关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。
B:flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。flush方法是当你想把BufferedOutStream中的数据立即输出时,就调用。 

也就是说,close()只能在流的结尾使用,因为一使用了,流对象就没了

而,flush()可以在途中使用,因为它仅仅是刷新作用

posted @ 2016-10-01 17:26  卡拉瓦  阅读(319)  评论(0编辑  收藏  举报