字符输出流OutputStreamWriter
字符输出流跟前面的缓冲区输出流有点像,都是包装流。这里它先包装一个字节流,然后包装流会去处理里面的字节,将其转化成对应的字符。
其构造方法如下:
1 package com.hw.file0222;
2
3 import java.io.FileNotFoundException;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.io.OutputStreamWriter;
7
8 import org.junit.Test;
9
10 @SuppressWarnings("unused")
11 public class DemoOutputStreamWriter {
12 public static void main(String[] args) {
13
14 }
15
16 @Test
17 public void testOutputStreamWriter(){
18 OutputStreamWriter writer = null;
19 try {
20 FileOutputStream fileoutput = new FileOutputStream("F://骚操作//demo01test.txt");
21 writer = new OutputStreamWriter(fileoutput);
22 } catch (IOException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 }finally {
26 try {
27 if(writer != null){
28 writer.close();
29 }
30 } catch (IOException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 }
35
36 }
37 }
同样,里面具有write方法:
1 writer.write('中');
2 writer.write('国');

也可以写入一个字符串:
1 writer.write("一生很长,为梦而狂");

也可以是一个字符数组(本质上还是一个字符串):
1 writer.write(new char[]{'我','在'});

另外我们需要注意,OutputStreamWriter里面也是有缓冲区的,也就是说,跟之前的一样,调用write方法的时候,并不会真的写到硬盘上,只有缓冲区里面满了才会真的写到硬盘上。或者当调用关闭方法、或者是flush方法的时候,才会真的写到硬盘上。
同时,它也可以指定编码格式,但是要注意,读取文件时的编码必须跟写入文件的编码保持一致,否则会出现乱码的问题。
一般来说Eclipse默认编码格式为GBK,如果我想要以UTF-8来写入,那么文件编码格式也必须要改为UTF-8.

浙公网安备 33010602011771号