论坛首页 入门技术论坛

java I/O

浏览 3203 次
锁定老帖子 主题:java I/O
该帖已经被评为新手帖
作者 正文
   发表时间:2007-12-19  

虽然做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 代码
  1. import java.io.*;   
  2.   class Filestream   
  3.  {   
  4.     public static void main(String args[])   
  5.     {   
  6.         try  
  7.         {   
  8.              File inFile=new File("file1.txt");   
  9.              File outFile=new File("file2.txt");   
  10.              FileInputStream fis=new FileInputStream(inFile);   
  11.              FileOutputStream fos=new  FileOutputStream(outFile);   
  12.            int c;   
  13.              while((c=fis.read())!=-1)  fos.write(c);   
  14.              fis.close();   
  15.              fos.close();   
  16.         }catch(FileNotFoundException e) {   
  17.                System.out.println("FileStreamsTest: "+e);   
  18.         }catch(IOException e) {   
  19.            System.err.println("FileStreamsTest: "+e);   
  20.         }   
  21.     }   
  22. }   

 

  • 字符流:java.io包中的类以Reader和Writer为基础类派生而来,Reader和Writer类也是抽象类,只提供处理一系列字符流的接口。

InputStreamReader和OUtputStream是java.io包中处理字符流的最基本的类

   发表时间:2007-12-20  
IO的分类其实有很多种,如果是按是否堵塞,可以分为堵塞(BIO)和非堵塞(NIO);如果是按照读取来源,可以分文件IO和socket IO,而对于处理对象,可以氛围字节IO和字符IO。另外,有部分辅助的IO,主要是用于处理缓存(例如BufferedReader)或者字符串处理的(PrintWriter)
0 请登录后投票
   发表时间:2007-12-20  
另外,还有一个不属于输入输出流的IO:RandomAccessFile
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics