字符输入流【Reader】
FileReader类
读取字符数据
public class Demo1 {
public static void main(String[] args) throws IOException {
//创建FileReader对象,绑定要读取的数据源
FileReader reader = new FileReader("/Users/wym/a.txt");
//使用read读取文件
/*int len;
while((len = reader.read()) != -1){
System.out.println((char)len);
}*/
int len;
char[] chars = new char[1024];
while((len = reader.read(chars)) != -1){
System.out.println(new String(chars,0,len));
}
//释放资源
reader.close();
}
}
字符输出流【Writer】
FileWriter类
输出数据(单个输出)
public class Demo1 {
public static void main(String[] args) throws IOException {
//创建FileWriter对象,绑定要写入数据的目的地
FileWriter writer = new FileWriter("/Users/wym/c.txt");
//使用write写入
writer.write(97);
//使用flush方法,将内存缓冲区中的数据,刷新到文件
//writer.flush();
//释放资源(回先把缓冲区中的数据刷新到文件)
writer.close();
}
}
关闭和刷新
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要
flush
方法了
- flush :刷新缓冲区,流对象可以继续使用
- close :先刷新缓冲区,然后通知系统释放资源。流对象不可以继续使用
写数据的其他方式
public class Demo1 {
public static void main(String[] args) throws IOException {
//创建FileWriter对象,绑定要写入数据的目的地
FileWriter writer = new FileWriter("/Users/wym/d.txt");
char[] chars = {'a','b','c','d','e'};
writer.write(chars);
writer.write(chars,1,3);
writer.write("曼彻斯特城");
//释放资源(回先把缓冲区中的数据刷新到文件)
writer.close();
}
}
续写和换行
public class Demo3 {
public static void main(String[] args) throws IOException {
//创建FileWriter对象,绑定要写入数据的目的地
FileWriter writer = new FileWriter("/Users/wym/e.txt",true);
//写出字符串
writer.write("曼城");
//写出换行
writer.write("\r");
//写出字符串
writer.write("德布劳内");
//释放资源(回先把缓冲区中的数据刷新到文件)
writer.close();
}
}
小贴士 :字符流,只能操作文本文件,不能操作图片,视频等非文本文件。
当我们单纯读或者写文本文件时,使用字符流,其他情况使用字节流
网友评论