1. 程式人生 > >Java中IO流介紹

Java中IO流介紹

 本文適合對java有一些瞭解的讀者。 介紹的比較粗糙。

IO流的分類  
 第一種分類 :輸入流 , 輸出流
 第二中類:    檔案流,管道流,網路流
  
2 java中的一次流的操作建立的資源: java中的流物件 ,作業系統產生的流資源 。

所以在使用流結束後,需要呼叫close()。因為java的垃圾處理器只會回收java虛擬機器中建立的java流物件,對於作業系統產生的流資源則不會回收。

3 輸入和輸出是對應用程式而言的。
 
 InputStream 所有輸入流的抽象
 

方法摘要
 int
          返回此輸入流下一個方法呼叫可以不受阻塞地從此輸入流讀取(或跳過)的估計位元組數。
 void close()
          關閉此輸入流並釋放與該流關聯的所有系統資源。
 void mark(int readlimit)
          在此輸入流中標記當前的位置。
 boolean
          測試此輸入流是否支援 markreset 方法。
abstract  int read()
          從輸入流中讀取資料的下一個位元組。
 int read(byte[] b)
          從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列 b 中。
 int read(byte[] b, int off, int len)
          將輸入流中最多 len 個數據位元組讀入 byte 陣列。
 void
reset()
          將此流重新定位到最後一次對此輸入流呼叫 mark 方法時的位置。
 long skip(long n)
          跳過和丟棄此輸入流中資料的 n 個位元組。


 OutputStream   所有輸出流的抽象
 

方法摘要
 void close()
          關閉此輸出流並釋放與此流有關的所有系統資源。
 void flush()
          重新整理此輸出流並強制寫出所有緩衝的輸出位元組。
 void write(byte[] b)
          將 b.length 個位元組從指定的 byte 陣列寫入此輸出流。
 void write(byte[] b, int off, int len)
          將指定 byte 陣列中從偏移量 off 開始的 len 個位元組寫入此輸出流。
abstract  void write(int b)
          將指定的位元組寫入此輸出流。

  
4 檔案輸入輸出流

 FileInputStream
 FileOutputStream 
 

舉例說明 

public class DemoFileIOStream
{

 /**
  * @param args
  * @throws FileNotFoundException
  */
 public static void main(String[] args) throws Exception
 {
  // TODO Auto-generated method stub
  // 寫入資料到檔案中
  FileOutputStream out = new FileOutputStream("out.txt");
  out.write("www.baidu.com".getBytes());
  out.close();
  
  // 讀取檔案中的資料到程式中
  File f = new File("t1.txt");
  FileInputStream in = new FileInputStream(f);
  byte[] buf = new byte[1024];
  int len = in.read(buf);
  in.close();
  System.out.println(new String(buf,0,len));
  
 }

}


5  二進位制檔案和文字檔案的區別

 0-255 之間的字元組成的檔案是文字檔案。
 文字檔案以外的檔案是二進位制檔案。

5.1  文字檔案操作類  Reader  和 Writer

     字元操作流  FileReader  和  FileWriter   這兩個類主要用於文字檔案流的操作

     舉例說明:

public class DemoReaderAndWriter
{

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception
 {
  // TODO Auto-generated method stub
  FileWriter fw = new FileWriter("fw.txt");
  fw.write("十一放長假了");
  fw.close();
  
  FileReader in = new FileReader("fw.txt");
  char[] buf = new char[1024];
  int len = in.read(buf);
  in.close();
  System.out.println(new String(buf,0,len));
 }

}