如何理解JAVA中的流概念

流機制是JAVAC++中的一個重要的機制,通過流能使我們能自由地控制包括文件,內存,IO設備等等中的數據的流向。如:可以從文件輸入流中獲取數據,經處理後再通過網絡輸出流把數據輸出到網絡設備上;或利用對像輸出流把一個程序中的對象輸出到一個格式流文件中,並通過網絡流對象將其輸出到遠程機器上,然後在遠程機器上利用對象輸入流將對象還原。像這些機制是別的高級語言所不能比擬的。但要掌握好這些流對象,流的概念是很重要的。

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

流是一串連續不繼的數據的集合,就像水管一里的水流,在水管的一端一點一點地供水,而在水管的另一端看到的是一股連續不斷的水流。數據寫入程序可以是一段一段地向數據流管道中寫入數據,這些數據段會按先向順序形成一個長的數據流。對數據的讀取程序來說,看不到數據流在寫入時的分段情況,每次可以讀取其中的任意長度的數據,但只能先讀取前面的數據後,再讀取後面的數據。不管寫入時是將數據分多次寫入,還是作爲一個整體一次寫入,讀取時的效果都是完全一樣的。

JAVA中的流按流動方向可以分爲輸入流及輸出流兩種,按流的處理位置可分爲節點流和包裝流。

輸入流,輸出流是以程序爲參考點來說的,所謂的輸入流就是程序從中獲取數據的流,輸出流就是程序要其寫數據的流。在輸入流的一邊是程序,而另一邊就是流的數據源。而輸出流的一邊則目標,一邊就是程序。其實流可以想像成是一條長河,在上游有一水庫提供水源,河邊住着一戶人,隨時都可以從河邊取到水,同時,這戶人也可以把一些廢水倒進河裏,使得廢水可以流進大海。這裏所提到河就是一個數據的流動通道,而水庫就好比是計算機上的一切數據源,包括磁盤文件,內存,IO設備,鍵盤等等,JAVA提供了非常完善的輸入流類來把這些數據源掛接到流上使得程序能從這些輸入流中獲取所需的數據。河邊上的用戶就是程序,它能隨時隨地從流中取得數據,只要有數據源掛接到這個通道上可以。而大海就是程序處理完數據後要流向的目的地,這些目的地包抱磁盤文件,內存,IO設備,顯示器等,這些目的地只是相對程序來說的,它們也可能是別的進程的輸入流。

如下例子,將數據輸出到別的文件,再從文件中讀出數據

File f=new File(“1.test”);

Try

{

       FileOutputStream out=new FileOutStream(f);

       Byte buf[]=”hello world”.getBytes();

       Out.write(buf);

       Out.close();

}

catch(Exception e)

{

       System.out.println(e.getMessage());

}

try

{
       FileInputStream in=new FileInputStream(f);

       byte buf[]=new byte[1024];

       int len=in.read(buf);

       System.out.println(new String(buf,0,len));

}

catch(Exception e)

{
       System.out.println(e.getMessage());

}

 

 

 

 

程序用於直接操作目標設備所對應的類叫節點流類,程序也可以通過一個間接流類去調用節點流類,以達到更加靈活方便地讀寫各種類型的數據,這個間接流類就是包裝流類。在JAVA
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章