java 中主要流有:
文件流:BufferedReader 与 PrintWriter , Scanner 与 PrintWriter
二进制流:FileInputStream 与 FileOutputStream ,BufferedInputStream 与 BufferedOutputStream ,DataInputStream 与 DataOutputStream ,ObjectInputStream 与ObjectOutputStream
如何区分它们,其实换句话说 就是如何正确使用它们 更贴切!
文件流:BufferedReader 与 PrintWriter , Scanner 与 PrintWriter 传输文件使用,不能用于传输图片等其他
格式:例如:
1、BufferedReader br = new BufferedReader(new FileReader(new File(filename)));
2、PrintWriter pw = new PrintWriter(new File(filename));
Scanner 主要是控制台用的输出流,
1、如果是输出到控制台用 Scanner scanner = new Scanner(System.in);
2、如果要输出到文件中用 Scanner scanner = new Scanner(new File(filename));
二进制流:FileInputStream 与 FileOutputStream ,FileterInputStream 与FileterOutputStream,BufferedInputStream 与 BufferedOutputStream ,DataInputStream 与 DataOutputStream ,ObjectInputStream 与ObjectOutputStream
1、FileInputStream 与 FileOutputStream 是最基本的继承 InputStream 与 OutputStream 的二进制流 以字节的方式从文件中读和写 他们的方法 read() ,write()只能读和写字节,不能读和写如整数值,双精度或字符串等 格式为:
FileInputStream input = new FileInputStream(new File(filename));
FileOutPutStream output = new FileOutputStream(new File(filename));
2、FileterInputStream 与FileterOutputStream 是为了解决FileInputStream 与 FileOutputStream 不能读和写如整数值,双精度或字符串等的缺陷,通过过滤器数据流 FileterInputStream 与FileterOutputStream 来包装数据字节流,
3、一般不使用FileterInputStream 与FileterOutputStream来处理流数据,而是使用它的两个子类 BufferedInputStream 与 BufferedOutputStream ,DataInputStream 与 DataOutputStream 来处理包装数据流
4、BufferedInputStream 与 BufferedOutputStream 一般用于做包装数据处理,也不直接用于处理流 ,最常用的是 DataInputStream 与 DataOutputStream 格式如下:
DataInputStream input = new DataInputStream (new FileInputStream(new File(filename)))
DataOutputStream input = new DataOutputStream (new FileOutputStream(new File(filename)))
或者
DataInputStream input = new DataInputStream (new BufferedInputStream(new FileInputStream(new File(filename))))
DataOutputStream input = new DataOutputStream (new BufferedOutputStream(new FileOutputStream(new File(filename)))) (注:第二种方法效率更高,它多加了一层封装)
5、ObjectInputStream 与ObjectOutputStream 为对象流,它完全可以替代DataInputStream 与 DataOutputStream 因为对象流有 他们的所有方法,而且还有 readObject(),writeObject()方法用于处理对象