IO:
1. IO流的概念: IO流用来处理设备之间的数据传输, Java对数据的操作是通过流的方式, 用于操作流的类都在IO包中, 流按流向分为两种:输入流,输出流;
IO程序书写:
<1>.使用前, 导入IO包中的类;
<2>.使用时, 进行IO异常处理;
<3>.使用后释放资源;
2. 流按操作类型分为两种: 字节流与字符流。 字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便;
字符流:
<1>.单个字符读取文件: FileReader
创建输入流, 关联文件
FileReader fr = new FileReader("file.txt");
读取一个字符, 判断是否是流末尾,返回-1;
int ch;
while((ch = fr.read()) != -1)
如果不是流末尾就转为字符串打印;
System.out.println((char)ch);
释放资源;
fr.close();
<2>写出文件: FileWriter
创建字符输出流,如果文件存在就直接关联并清空内容,如果不存在就创建新文件;
FileWriter fw = new FileWriter("dest.txt");
输出字符;
fw.write();
关闭输出流, 注意: 只有关闭输出流才能写出;
fw.close();
<3>注意事项:
(1)文件路径:
定义文件路径时Windows中的目录符号为“\”,但这个符号在Java中是特殊字符,需要转义, 可以用“\\”或“/”表示;
(2)读取文件
读取文件时必须保证文件存在,否则将抛出FileNotFoundException
(3)写出文件:
写出时文件如不存在时程序会创建新文件,如文件已存在则会清空原文件内容重新写入, 如需追加内容可调用FileWriter构造函数FileWriter(String fileName, boolean append);
<4>文件拷贝:
<4>拷贝文件:
(1)FileReader 和FileWriter 逐个字符拷贝,如上面的输入输出结合;
(2)FileReader 和 FileWrite 自定义数组(缓冲区)拷贝;
原理: 定义一个数组, 然后调用FileReader读取一个数组;
FileReader fr = new FileReader("file.txt");
FileWriter fw = new FileWriter("dest.txt");
定义一个字符数组, 当做缓冲区;
char[] buffer = new char[1024];
定义一个变量,用来记住每次读到多少个字符;
int len;
一次读取一批字符,记住读到多少个,判断是否到达流末尾;
while((len = fr.read(buffer)) != -1)
如果到达流末尾就将文件写出(0---len);
fe.writer(buffer, 0, len);
释放资源;
fr.close();
fw.close();
(3)BufferedReader 和BufferedWriter 内置缓冲区逐个拷贝;
原理:从字符输入流中读取文本, 缓冲各个字符,从而实现字符;
创建带缓冲功能的字符输入流
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
创建带缓冲功能的字符输出流
BufferedWriter bw = new BufferedReader(new FileWriter("dest.txt"));
读取一个字符, 判断是否是流末尾,返回-1;
int ch;
while((ch = br.read()) != -1)
fw.write((char)ch);
关闭资源
fr.close();
fw.close();
(4)BufferedReader 和 BufferedWriter 逐行拷贝;
原理:读取一个文本,通过字符,换行("\n"),回车("\r")或回车后直接跟着换行,即可认为某行已终止;
包含该行内容的字符串,不包含任何终止符,如果已到达流末尾则返回null;
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("dest.txt"));
String len;
读取一行;
while((len = br.readLine()) != null)
读到一行就写出一行;
bw.write(len);
释放资源;
br.close();
bw.close();
---------------------- android培训、 java培训、期待与您交流! ----------------------