A:流向分(要站在Java程序的角度)
输入流 读取数据
输出流 写出数据
B:数据类型
字节流
字节输入流
字节输出流
字符流
字符输入流
字符输出流
注意:
a:一般来说,如果没有说是按照什么分,默认指按照数据类型分。
b:什么时候用字符流?什么时候用字节流?
把要操作的文件用记事本打开,如果能够读懂里面的内容,就用字符流。
否则用字节流。如果你不知道,用字节流。
(2)IO流的体系结构:
字节流:
字节输入流 InputStream
FileInputStream
BufferedInputStream
字节输出流 OutputStream
FileOutputStream
BufferedOutputStream
字符流:
字符输入流 Reader
FileReader
BufferedReader
字符输出流 Writer
FileWriter
BufferedWriter
(3)FileWriter写出数据
字符输出流操作步骤:
A:创建字符输出流对象。
B:调用wirte()方法
C:释放资源。
代码体现:
FileWriter fw = new FileWriter("fw.txt");
fw.write("hello,IO,我来了");
fw.flush();
fw.close();
(4)FileReader读取数据
字符输入流操作步骤:
A:创建字符输入流对象。
B:调用read()方法,把数据显示。
C:释放资源。
代码体现:
FileReader fr = new FileReader("fw.txt");
//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch);
}
//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
System.out.print(String.valueOf(chs,0,len));
}
fr.close();
(5)案例:复制文本文件两种方式。
代码体现:自己练把。
(6)字符缓冲区类
BufferedReader:
特有功能:
public String readLine():一次读取一行数据,只有数据没有换行符。
BufferedWriter:
特有功能:
public void newLine():根据操作系统决定写入什么样的换行符。
(7)案例:复制文本文件三种方式。
代码体现:自己练把。
用特有功能进行复制的代码一起写:
数据源:
c:\\a.txt
目的地:
d:\\b.txt
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\b.txt"));
String line = null;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
(8)综合案例:
A:把集合中的数据写到文本文件。
B:把文本文件中的数据添加到集合中。
C:编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
并将原来文件的扩展名从.java改为.jad。