1:IO流
(1)按照读写数据格式划分:字节流和字符流
A:InputStream 字节输入流 -- FileInputStream
OutputStream 字节输出流 -- FileOutputStream
B: Reader 字符输入流 -- FileReader
Writer 字符输出流 -- FileWriter
(2)字符流的写入数据
步骤
A:创建字符输出流对象。
创建了FileWriter对象
调用系统功能创建文件。
把FileWriter指向要操作的文件。
B:调用FileWriter的写入方法
C:释放资源
代码体现:
FileWriter fw = new FileWriter("a.txt");
fw.write("haha");
fw.flush();
fw.close();//不仅仅是释放java中的对象资源,也是通知系统释放资源。
写入数据的方式:
写入一个字符
写入一个字符数组
写入一个字符数组的一部分
写入一个字符串
写入一个字符串的一部分
两个小问题:
如何以追加的方式写入数据
通过构造传递第二个参数。
如何给数据添加换行
\r\n
(3)字符流的读取数据
步骤
A:创建字符输入流对象。
要读取数据的时候,文件必须存在。
创建了字符输入流对象
把输入流对象指向了要读取的文件
B:调用FileReader的读取方式读取数据
C:释放资源
代码体现:
FileReader fr = new FileReader("a.txt");
//第一种方式读取
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch)
}
//第二种方式读取 1k的整数倍
char[] chs = new char[1024]; //数据读取的存放位置
int len = 0; //实际读取的个数
while((len=fr.read(chs))!=-1)
{
System.out.print(new String(chs,0,len));
}
fr.close();
读取数据的方式
一次读取一个字符
一次读取多个字符,用一个字符数组接收
(4)复制文本文件
数据源 -- 读取数据 FileReader
写入数据 -- 目标文件 FileWriter
代码体现:
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("copy_a.txt");
char[] chs = new char[1024]; //数据读取的存放位置
int len = 0; //实际读取的个数
while((len=fr.read(chs))!=-1)
{
fw.write(chs,0,len);
}
fw.close();
fr.close();