IO流 - 字符流
文件字符输入流 - 读字符数据进来
FileReader(文件字符输入流)
- 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去。
构造器 | 说明 |
---|
public FileReader(File file) | 创建字符输入流管道与源文件连通 |
public FileReader(String pathname) | 创建字符输入流管道与源文件连通 |
方法名称 | 说明 |
---|
public int read() | 每次读取一个字符返回,如果发现没有数据可读会返回-1 |
public int read(char [ ] buffer) | 每次用一个字符数组去读取数据,返回字符数组读取了多少个字符 如果发现没有数据可读会返回-1 |
public class Test {
public static void main(String[] args) throws Exception {
try (
// 创建一个文件字符输入流管道与源文件连通
Reader fr = new FileReader("C:\\Users\\hasee\\IdeaProjects\\test\\src\\com\\test\\test")
) {
// 读取文本文件的内容
// int c; //记住每次读取的字符编号
// while ((c = fr.read()) != -1){
// System.out.print((char) c);
// }
// 每次读取一个字符的形式,性能肯定是比较差的
// 每次读取多个字符
char[] buffer = new char[3];
int len; //记住每次读取了多少字符
while ((len = fr.read(buffer)) != -1){
// 读取多少倒出多少
System.out.print(new String(buffer,0,len));
}
// 性能是比较不错的
}catch (Exception e){
e.printStackTrace();
}
}
}
文件字符输出流 - 写字符数据出去
FileWriter(文件字符输出流)
- 作用:以内存为基准,把内存中的数据以字符的形式写出到文件中去。
构造器 | 说明 |
---|
public FileWriter(File file) | 创建字符输出流管道与源文件连通 |
public FileWriter(String filepath) | 创建字符输出流管道与源文件连通 |
public FileWriter(File file,boolean append) | 创建字符输出流管道与源文件连通,可追加数据 |
public FileWriter(String filepath,boolean append) | 创建字符输出流管道与源文件连通,可追加数据 |
方法名称 | 说明 |
---|
void write(int c) | 写一个字符 |
void write(String str) | 写一个字符串 |
void write(String str,int off,int len) | 写一个字符串的一部分 |
void write(char[ ] cbuf) | 写一个字符数组 |
void write(char[ ],int off,int len) | 写入字符数组的一部分 |
import java.io.FileWriter;
import java.io.Writer;
public class Test {
public static void main(String[] args) throws Exception {
try (
// 创建一个文件字符输出流管道与目标文件连通
// 覆盖管道
//Writer fw = new FileWriter("src/com/test/test");
// 追加管道
Writer fw = new FileWriter("src/com/test/test", true)
) {
// 写一个字符出去
fw.write('a');
fw.write(97);
fw.write('我');
fw.write("\r\n");
// 写一个字符串出去
fw.write("我爱中国abc");
fw.write("\r\n");
// 写字符串的一部分出去
fw.write("我爱中国abc",0,4);
fw.write("\r\n");
// 写一个字符数组出去
char[] buffer = {'闪','电','a','b','c'};
fw.write(buffer);
fw.write("\r\n");
// 写字符数组的一部分出去
fw.write(buffer,0,2);
fw.write("\r\n");
}catch (Exception e){
e.printStackTrace();
}
}
}
字符输出流使用时的注意事项
字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效
方法名称 | 说明 |
---|
public void flush()throw IOException | 刷新流,就是将内存中缓存的数据立即写道文件中去生效 |
public void close()throw IOException | 关闭流的操作,包含了刷新 |
字节流、字符流的使用场景:
- 字节流适合做一切文件数据的拷贝(音视频,文本);字节流不适合读取中文内容输出
- 字符流适合做文本的操作(读,写)