虽然做java有段时间了发觉对java IO流掌握的还不是很好,所以觉得花一个晚上的时间在对io资料看看,所以就有了这片文章流在JAVA中一般分为输入流(Input Stream)和输出流(Output Stream)2类,但这不是绝对的划分,比如一个文件当我们在向该文件写数据的时候,就是一个输出流;当从该文件读数据的时候,那么就是一个输入流,对于初学者而言可能经常把输入流和输出流弄混淆包括我也是这样,经常弄不清楚输入流和输出流,拿上面的例子分析,当程序向文件写数据的时候,就是程序把流输出到文件那么流的源头(既所有者)是程序,当在程序去读文件的数据的时候,这个时候还是以程序为中心是把文件中的对象(流)输入进程序,呵呵 以上只是个人比较愚昧的理解。
在java中主要是java.io包中提供一系列的类和接口来实现输入和输出处理的,标准输入和输出则是java.lang包提供的类来处理,但他们都是从java.io包中的类继承而来。
基本输出流的原理如下:
- 读(输入流):打开一个流对象->当不是结尾,从流中读入数据->关闭流对象。
- 写(输出流):打开一个流对象->当不是结尾,向流中写入数据->关闭流对象。
在java1.1以前,java.io中只提供了字节流,在1.1以后的版本中加入了字符流
- 字节流
java中每一种字节流基本功能都依赖于基本类InputStream和OutputStream,他们都是抽象类,不能直接使用
下面是个文件流的简单例子
java 代码
- import java.io.*;
- class Filestream
- {
- public static void main(String args[])
- {
- try
- {
- File inFile=new File("file1.txt");
- File outFile=new File("file2.txt");
- FileInputStream fis=new FileInputStream(inFile);
- FileOutputStream fos=new FileOutputStream(outFile);
- int c;
- while((c=fis.read())!=-1) fos.write(c);
- fis.close();
- fos.close();
- }catch(FileNotFoundException e) {
- System.out.println("FileStreamsTest: "+e);
- }catch(IOException e) {
- System.err.println("FileStreamsTest: "+e);
- }
- }
- }
- 字符流:java.io包中的类以Reader和Writer为基础类派生而来,Reader和Writer类也是抽象类,只提供处理一系列字符流的接口。
InputStreamReader和OUtputStream是java.io包中处理字符流的最基本的类