Java IO流(三) 字符流Reader和Writer
Reader字符输入流
Reader类有如下几个读数据会用到的方法:
- int read():每次读取一个字符,并把它转换为 0~65535 的整数,然后返回读取到的字符。读到末尾返回-1。(为了提高 I/O 操作的效率,建议尽量使用下面两种read()方法)
- int read(char[] cbuf):将读取到的多个字符存储到 cbuf 中,然后返回读取的字符,读到末尾时返回-1。
- int read(char[] cbuf,int off,int len):将读取到的多个字符存储进字符数组 cbuf,从索引 off 开始,长度为len字符,返回结果为读取的字符数.
Reader的子类FileReader是专门用于从文件中读取数据到程序中(内存)
package com.mike.io.eg;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.InputStreamReader;
/**
* @author mike
* @date 2020-11-26
* @desc 文件字符输入流demo
*/
public class FileReaderDemo {
public static void main(String[] args) {
//定义输入流
FileReader fr = null;
try {
//创建文件对象
File file = new File("F:\\foo.txt");
//2、创建输入流对象
fr = new FileReader(file);
int len = 0;
char[] buffer = new char[1]; //每次读取一个字符
while((len = fr.read(buffer)) != -1) {
System.out.println(new String(buffer,0,len));
}
} catch(IOException e) {
e.printStackTrace();
}finally {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
输出结果
FileWriter输出流
Writer类有如下几个写数据会用到的方法:
- void write(int c):把一个字符写入到文件中。
- void write(char[] cbuf):把cbuf字符数组写入到文件中。
- void write(char[] cbuf,int off,int len):把部分字符数组写入到文件中,从 cbuf 数组的 off 索引开始,写入len个字符。
- void write(String str):把一个字符串写入到文件中。
- void write(String str,int off,int len):把部分字符串写入到文件中,从 字符串的 off 索引开始,写入len个字符。
Writer的子类FileWriter是专门用户从程序写入数据到文件中
package com.mike.io.eg;
import java.io.File;
import java.io.IOException;
import java.io.FileWriter;
/**
* @author mike
* @date 2020-11-26
* @desc 字符输出流demo
*/
public class FileWriterDemo {
public static void main(String[] args) {
FileWriter fw = null;
try {
File file = new File("F:\\foo.txt");
fw = new FileWriter(file);
fw.write("我是中国人");
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
输出结果