字符流
读写单位一次一个字符
Reader结尾:字符输入流
Writer结尾:字符输出流
InputStreamReader:字节输入流
OutputStreamWriter:字节输出流
OutputStreamWriter有一个构造方法可以传入编码集
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* 字符输出流
* OutputStreamWriter
* 以字符为单位写数据
*
*/
public class WriterDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("char.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
/**
* 将缓冲输出流转换为字符输出流
*/
//重载构造方法,传入给定的编码集对字符进行字节转换
OutputStreamWriter writer=new OutputStreamWriter(bos,"UTF-8");
/**
* writer(char[] chrs):一次性写出一个字符数组
* writer(int chr):一次性写一个字符(2个字节)
* writer(String str):一次将字符串写出.
*/
writer.write('你');//写int值的低16位
writer.write("好,大家好!");
writer.close();
}
}
读取
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 字符输入流
* InputStreamReader
* 以字符为单位读取数据
* @author Administrator
*
*/
public class ReaderDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("char.txt");
/*
* 将字节输入流转换为字符输入流
*/
BufferedInputStream bis=new BufferedInputStream(fis);
//使用重载方法,用UTF-8来解码, 使用windows默认GBK会导致乱码
InputStreamReader reader=new InputStreamReader(bis,"UTF-8");
for(int chr=-1;;){
if((chr=reader.read())!=-1){
System.out.print((char)chr);
}else{break;}
}
reader.close();
}
}
数据源 DataSource