一、字符流
文件字符流
字符流的两个抽象父类:字符输出流:Writer 和字符输入流:Reader
1、字符输出流:Writer
使用字符输出流写入数据:使用 Writer 它的子类 OutputStreamWriter 类
OutputStreamWriter 类的构造方法
public OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流
public OutputStreamWriter(OutputStream out,String charsetName):根据指定编码把字节流数据转换为字符流
使用构造方法的 Demo 代码示例:
//创建字符输出流对象,并且根据默认编码把字节流的数据转换为字符流
OutputStreamWriter oswA = new OutputStreamWriter( new FileOutputStream("a.txt"));
//创建字符输出流对象,并且根据默认编码把字节流的数据转换为字符流
OutputStreamWriter oswB = new OutputStreamWriter( new
FileOutputStream("b.txt"),"UTF-8");
OutputStreamWriter 类的成员方法
public void write(int c):写一个字符
public void write(char[] cbuf):写一个字符数组
public void write(char[] cbuf,int off,int len):写一个字符数组的一部分
public void write(String str):写一个字符串
public void write(String str,int off,int len):写一个字符串的一部分
flush():刷新缓冲区
close():关闭流对象
- Demo代码示例:
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
// 创建对象
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("osw.txt"));
// 写数据
// public void write(int c):写一个字符
osw.write('a');
osw.write(97);
osw.write("\r\n");//换行
// public void write(char[] cbuf):写一个字符数组
char[] chs = {'a','b','c','d','e'};
osw.write(chs);
osw.write("\r\n");//换行
// public void write(char[] cbuf,int off,int len):写一个字符数组的一部分
osw.write(chs,1,3);
osw.write("\r\n");//换行
// public void write(String str):写一个字符串
osw.write("希望早日实现世界和平");
osw.write("\r\n");//换行
// public void write(String str,int off,int len):写一个字符串的一部分
osw.write("123456789", 0, 3);//这是的0,3意思是从下标为0的字符开始向后写3个
osw.write("\r\n");//换行
// 刷新缓冲区
osw.flush();
osw.write("abcdefg", 1, 3);
// 释放资源
osw.close();
}
}
2、字符输入流:Reader
使用字符输入流读取数据:使用 Reader它的子类 InputStreamReader 类
InputStreamReader 类的构造方法
public InputStreamReader(InputStream in):用默认的编码读取数据
public InputStreamReader(InputStream in,String charsetName):用指定的编码读取数据
使用构造方法的 Demo 代码示例:
//创建字符输入流对象,并且根据默认编码把字节流的数据转换为字符流
InputStreamReader oswA = new InputStreamReader( new FileInputStream("a.txt"));
//创建字符输入流对象,并且根据默认编码把字节流的数据转换为字符流
InputStreamReader oswB = new InputStreamReader( new
FileInputStream("b.txt"),"UTF-8");
InputStreamReader 类的成员方法
-
public int read():一次读取一个字符
-
public int read(char[] cbuf):一次读取一个字符数组
-
close():关闭流对象
- Demo代码示例:
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReaderDemo isrd = new InputStreamReaderDemo ();
isrd.readA();
}
// 一次读取一个字符
public void readA() throws IOException{
// 创建对象
InputStreamReader isr = new InputStreamReader(new FileInputStream(
"osw.txt"));
// 一次读取一个字符
int ch = 0;
while ((ch = isr.read()) != -1) {
System.out.print((char) ch);
}
// 释放资源
isr.close();
}
// 一次读取一个字符数组
public void readB() throws IOException{
// 创建对象
InputStreamReader isr = new InputStreamReader(new FileInputStream(
"osw.txt"));
// 一次读取一个字符数组
char[] chs = new char[1024];
int len = 0;
while ((len = isr.read(chs)) != -1) {
System.out.print(new String(chs, 0, len));
}
// 释放资源
isr.close();
}
}