组合流过滤器
FileInputStream没有任何读入数据类型的方法,DataInputStream没有任何从文件中获取数据的方法。
Java使用了一种灵巧的机制来分离这种责任。某些流(如 FileInputStream)可以从文件和其它更外部的位置
获取字节,而其它流(例如 DataInputStream和PrintWriter)可以将字节组装到更有用的数据类型中。
Java程序员必须对二者进行组合
例如:从文件中读入数字
DataInputStream din = new DataInputStream(new FileInputStream("employee.dat"));
使用缓冲机制用于文本的输入
DataInputStream din = new DataInputStream(
new BufferedInputStream(new FileInputStream("employee.dat")));
有时当多个流连接在一起时,你需要跟踪各个中介流(intermediate stream)
PushbackInputStream pbin = new PushbackInputStream(
new BufferedInputStream(new FileInputStream("employee.dat")));
if(pbim.read()!='<')pbin.unread();
预先浏览并且还可以读入数字
DataInputStream din = new DataInputStream(
pbin = new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat"))));
文本输入输出
InputStreamReader in = new InputStreamReader(new FileOutputStream("employee.dat"),"GBK");
FileWriter out = new FileWriter("output.txt");
||
FileWriter out = new FileWriter(new FileOutputStream("output.txt"));
PrintWriter out = new PrintWriter("employee.dat");
||
PrintWriter out = new PrintWriter(new FileWriter("employee.dat"));
以二进制格式写出数据,需要使用DataOutputStream
以文本格式写出数据,需要使用PrintWriter.
---------------------------------------------
文本的读入的唯一方式BufferedReader类,他拥有一个readLine()方法
二进制格式读入数据DataInputStream
BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
一个典型的输入循环:
String line = null;
while((line = in.readLine())!=null){
do something with line
}
总结:
文本读入写出:
读入:BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
写出:PrintWriter out = new PrintWriter(new FileWriter("employee.txt"));
由于FileReader和FileWriter只能使用默认的字符集,有一定的局限性,所以有时也使用
他们的父类:InputStreamReader和OutputStreamWriter
读入:BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream("employee.txt","GBK")));
写出:PrintWriter out = new PrintWriter(
new OutputStreamWriter(
new FileInputStream("employee.txt","GBK")));
二进制读入写出:
读入:DataInputStream in = new DataInputSream(
new BufferedInputStream(
new FileInputStream("employee.txt")));
写出:DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("employee.txt")));
FileInputStream没有任何读入数据类型的方法,DataInputStream没有任何从文件中获取数据的方法。
Java使用了一种灵巧的机制来分离这种责任。某些流(如 FileInputStream)可以从文件和其它更外部的位置
获取字节,而其它流(例如 DataInputStream和PrintWriter)可以将字节组装到更有用的数据类型中。
Java程序员必须对二者进行组合
例如:从文件中读入数字
DataInputStream din = new DataInputStream(new FileInputStream("employee.dat"));
使用缓冲机制用于文本的输入
DataInputStream din = new DataInputStream(
new BufferedInputStream(new FileInputStream("employee.dat")));
有时当多个流连接在一起时,你需要跟踪各个中介流(intermediate stream)
PushbackInputStream pbin = new PushbackInputStream(
new BufferedInputStream(new FileInputStream("employee.dat")));
if(pbim.read()!='<')pbin.unread();
预先浏览并且还可以读入数字
DataInputStream din = new DataInputStream(
pbin = new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat"))));
文本输入输出
InputStreamReader in = new InputStreamReader(new FileOutputStream("employee.dat"),"GBK");
FileWriter out = new FileWriter("output.txt");
||
FileWriter out = new FileWriter(new FileOutputStream("output.txt"));
PrintWriter out = new PrintWriter("employee.dat");
||
PrintWriter out = new PrintWriter(new FileWriter("employee.dat"));
以二进制格式写出数据,需要使用DataOutputStream
以文本格式写出数据,需要使用PrintWriter.
---------------------------------------------
文本的读入的唯一方式BufferedReader类,他拥有一个readLine()方法
二进制格式读入数据DataInputStream
BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
一个典型的输入循环:
String line = null;
while((line = in.readLine())!=null){
do something with line
}
总结:
文本读入写出:
读入:BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
写出:PrintWriter out = new PrintWriter(new FileWriter("employee.txt"));
由于FileReader和FileWriter只能使用默认的字符集,有一定的局限性,所以有时也使用
他们的父类:InputStreamReader和OutputStreamWriter
读入:BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream("employee.txt","GBK")));
写出:PrintWriter out = new PrintWriter(
new OutputStreamWriter(
new FileInputStream("employee.txt","GBK")));
二进制读入写出:
读入:DataInputStream in = new DataInputSream(
new BufferedInputStream(
new FileInputStream("employee.txt")));
写出:DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("employee.txt")));