讨论JAVA的输入,输出流的分类,应用

解决方案 »

  1.   

    流文件可以是各种格式的文件,如mp3格式、rm格式、doc格式的文件。
    流文件读入和写出类有FileInputStream、FileOutputStream类。下面是其继承关系:
    java.lang.Object
      |
      +--java.io.InputStream
            |
            +--java.io.FileInputStreamjava.lang.Object
      |
      +--java.io.OutputStream
            |
            +--java.io.FileOutputStream
    在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把能够写一个字节序列称作一个输出流。它们分别由抽象类 InputStream和OutputStream类表示。
    1.InputStream  ◇ 从流中读取数据:
      int read( ); //读取一个字节,返回值为所读的字节
      int read( byte b[ ] ); //读取多个字节,放置到字节数组b中,通常
                  //读取的字节数量为b的长度,返回值为实际
                  //读取的字节的数量
      int read( byte b[ ], int off, int len ); //读取len个字节,放置
                           //到以下标off开始字节
                           //数组b中,返回值为实
                           //际读取的字节的数量
      int available( );   //返回值为流中尚未读取的字节的数量
      long skip( long n ); //读指针跳过n个字节不读,返回值为实际
                 //跳过的字节数量  ◇ 关闭流:
      close( ); //流操作完毕后必须关闭
      
      ◇ 使用输入流中的标记:
      void ( int readlimit ); //记录当前读指针所在位置,readlimit
                     //表示读指针读出readlimit个字节后
                    //所标记的指针位置才失效
      void reset( );     //把读指针重新指向用方法所记录的位置
      boolean Supported( ); //当前的流是否支持读指针的记录功能有关每个方法的使用,详见java API。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public abstract read()throws IOException 
    读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的输入流类需要重载此方法,以提供有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。 
    public int read(byte[] b)throws IOException 
    把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。 
    public abstract int read(byte[] b,int off,int len)throws IOException 
    把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。 
    public long skip(long n)throws IOException 
    略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。 
    public int available()throws IOException 
    read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2.OutputStream  ◇ 输出数据:
      void write( int b );   //往流中写一个字节b
      void write( byte b[ ] ); //往流中写一个字节数组b
      void write( byte b[ ], int off, int len ); //把字节数组b中从
                  //下标off开始,长度为len的字节写入流中  ◇ flush( )       //刷空输出流,并输出所有被缓存的字节
      由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。  ◇ 关闭流:
       close( );       //流操作完毕后必须关闭