流式 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( " http://www.cnblogs.com " .getBytes()); 
  fos.close();
  
  } 
  
 }