1、流的分类:
按数据流的方向不同可以分为输入流和输出流
按处理数据单位不同可以分为字节流和字符流
按功能不同可以分为节点流和处理流
2、
\ | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
在Java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使OutputStream完成,输入使用的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。这四个都是抽象类。
3、DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的结点流上。DataInputStream 和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(如:int,double等)的方法。
4、PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。
PrintWriter和PrintStream有自动flush功能。
下面是一些简单的示例。
FileInputStream、FileOutputStream
import java.io.*;
public class Test{
public static void main(String args[]){
FileInputStream in = null;
FileOutputStream out = null;
int b;
try{
in = new FileInputStream("e:\\java\\Input.java");
out = new FileOutputStream("e:/java/Output.java");
}catch(FileNotFoundException e){
System.out.println("文件没有找到!");
System.exit(-1);
}
try{
while((b = in.read()) != -1){
out.write(b);
}
in.close();
out.close();
}catch(IOException e){
System.out.println("文件复制失败!");
System.exit(-1);
}
System.out.println("文件已复制。");
}
}
FileReader、FileWriter
import java.io.*;
public class Test {
public static void main(String args[]) {
FileReader in = null;
FileWriter out = null;
int b;
try {
in = new FileReader("e:\\java\\Input.java");
out = new FileWriter("e:/java/Output.java");
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
System.out.println("文件没有找到&#x