流式 IO

流 (Stream) 是字节的源或目的。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


两种基本的流是:输入流 (Input Stream) 和输出流 (Output Stream) 。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。



流的分类



节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。



InputStream



三个基本的读方法
      abstract int read() :读取一个字节数据,并返回读到的数据,如果返回 -1 ,表示读到了输入流的末尾。
      int read(byte[]?b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。
      int read(byte[]?b, int?off, int?len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。 off 指定在数组 b 中存放数据的起始偏移位置; len 指定读取的最大字节数。
其它方法
      long skip(long?n) :在输入流中跳过 n 个字节,并返回实际跳过的字节数。
      int available() :返回在不发生阻塞的情况下,可读取的字节数。
      void close() :关闭输入流,释放和这个流相关的系统资源。
      void mark(int?readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于 readlimit 设置的值,则流忽略这个标记。
      void reset() :返回到上一个标记。
      boolean markSupported() :测试当前流是否支持 mark 和 reset 方法。如果支持,返回 true ,否则返回 false 。
java.io 包中 InputStream 的类层次



OutputStream





三个基本的写方法
     abstract void write(int?b) :往输出流中写入一个字节。
     void write(byte[]?b) :往输出流中写入数组 b 中的所有字节。
     void write(byte[]?b, int?off, int?len) :往输出流中写入数组 b 中从偏移量 off 开始的 len 个字节的数据。
其它方法
     void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
     void close() :关闭输出流,释放和这个流相关的系统资源。
java.io 包中 OutputStream 的类层次



——————————————————————————-
——————————————————————————-
Demo1 :在控制台读取键盘输入,然后显示。 Ctrl+C 结束运行
——————————————————————————-



 

import 
     java.io. * ; 
   
 
     
   
 
     
   public 
       
   class 
     StreamDemo   { 
   
 
      
   
 
       
   public 
       
   static 
       
   void 
     main(String[] args)   
   throws 
     Exception   { 
   
 
       
   int 
     data; 
   
 
      
   
 
        
   while 
     ((data  =  System.in.read())  !=   - 1 )   { 
   
 
      System.out.write(data); 
   
 
     }  
   
 
     
   
 
     }  
   
 
      
   
 
    }

——————————————————————————-
——————————————————————————-



基本的流类  

1 、 FileInputStream 和 FileOutputStream  
    
节点流,用于从文件中读取或往文件中写入字节流。如果在构造 FileOutputStream 时,文件已经存在,则覆盖这个文件。
——————————————————————————-
Demo2 :将字符串写入特定文件,注意 write 方法只接收字符数组。
——————————————————————————-



 


import 
     java.io. * ; 
   
 
      
   
 
       
   public 
       
   class 
     StreamDemo   { 
   
 
      
   
 
        
   public 
       
   static 
       
   void 
     main(String[] args)   
   throws 
     Exception   { 
   
 
      FileOutputStream fos  =    
   new 
     FileOutputStream( " 1.txt " ); 
   
 
     
   
 
         
   /**/ /*  
   
 
       *  
   注意: 
   FileOutputStream 
   的 
   write 
   方法接收字符数组,不能接收 
   String 
   字符串, 
   
 
      *  
   所以要用 
   String 
   的 
   getBytes 
   方法生成一个字符数组 
   
 
        */ 
     
   
 
     fos.write( "  " .getBytes());  
   
 
     fos.close(); 
   
 
      
   
 
     }  
   
 
      
   
 
    }


转载于:https://blog.51cto.com/2044575/381655