亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java輸入輸出流的使用詳細介紹

2019-11-26 16:09:40
字體:
來源:轉載
供稿:網友

1.什么是IO

      Java中I/O操作主要是指使用Java進行輸入,輸出操作. Java所有的I/O機制都是基于數據流進行輸入輸出,這些數據流表示了字符或者字節數據的流動序列。Java的I/O流提供了讀寫數據的標準方法。任何Java中表示數據源的對象都會提供以數據流的方式讀寫它的數據的方法。  

      Java.io是大多數面向數據流的輸入/輸出類的主要軟件包。此外,Java也對塊傳輸提供支持,在核心庫 java.nio中采用的便是塊IO。

  流IO的好處是簡單易用,缺點是效率較低。塊IO效率很高,但編程比較復雜。 
      Java IO模型  :
      Java的IO模型設計非常優秀,它使用Decorator模式,按功能劃分Stream,您可以動態裝配這些Stream,以便獲得您需要的功能。例如,您需要一個具有緩沖的文件輸入流,則應當組合使用FileInputStream和BufferedInputStream。 

2.數據流的基本概念

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

      “流是磁盤或其它外圍設備中存儲的數據的源點或終點?!?/SPAN>

    在電腦上的數據有三種存儲方式,一種是外存,一種是內存,一種是緩存。比如電腦上的硬盤,磁盤,U盤等都是外存,在電腦上有內存條,緩存是在CPU里面的。外存的存儲量最大,其次是內存,最后是緩存,但是外存的數據的讀取最慢,其次是內存,緩存最快。這里總結從外存讀取數據到內存以及將數據從內存寫到外存中。對于內存和外存的理解,我們可以簡單的理解為容器,即外存是一個容器,內存又是另外一個容器。那又怎樣把放在外存這個容器內的數據讀取到內存這個容器以及怎么把內存這個容器里的數據存到外存中呢?

     在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:

         標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流等等,java中將輸入輸出抽象稱為流,就好像水管,將兩個容器連接起來。將數據沖外存中讀取到內存中的稱為輸入流,將數據從內存寫入外存中的稱為輸出流。

    流是一個很形象的概念,當程序需要讀取數據的時候,就會開啟一個通向數據源的流,這個數據源可以是文件,內存,或是網絡連接。類似的,當程序需要寫入數據的時候,就會開啟一個通向目的地的流。

      總結的基本概念如下:

1) 數據流

    一組有序,有起點和終點的字節的數據序列。包括輸入流和輸出流。

  

2) 輸入流(Input  Stream):

      程序從輸入流讀取數據源。數據源包括外界(鍵盤、文件、網絡…),即是將數據源讀入到程序的通信通道

     
 3) 輸出流:
    程序向輸出流寫入數據。將程序中的數據輸出到外界(顯示器、打印機、文件、網絡…)的通信通道。

         

采用數據流的目的就是使得輸出輸入獨立于設備。

Input  Stream不關心數據源來自何種設備(鍵盤,文件,網絡)
Output  Stream不關心數據的目的是何種設備(鍵盤,文件,網絡)

4 數據流分類:
流序列中的數據既可以是未經加工的原始二進制數據,也可以是經一定編碼處理后符合某種格式規定的特定數據。因此Java中的流分為兩種:
 1)  字節流:數據流中最小的數據單元是字節
 2)  字符流:數據流中最小的數據單元是字符, Java中的字符是Unicode編碼,一個字符占用兩個字節。

3. 標準I/O

      Java程序可通過命令行參數與外界進行簡短的信息交換,同時,也規定了與標準輸入、輸出設備,如鍵盤、顯示器進行信息交換的方式。而通過文件可以與外界進行任意數據形式的信息交換。

1. 命令行參數
復制代碼 代碼如下:

public class TestArgs {  
    public static void main(String[] args) {  
        for (int i = 0; i < args.length; i++) {  
            System.out.println("args[" + i + "] is <" + args[i] + ">");  
        }  
    } 


運行結果:

args[0] is <Java>

args[1] is <C>

args[2] is <VB>

2. 標準輸入,輸出數據流

java系統自帶的標準數據流:java.lang.System:

復制代碼 代碼如下:

java.lang.System  
public final class System  extends Object{  
   static  PrintStream  err;//標準錯誤流(輸出)  
   static  InputStream  in;//標準輸入(鍵盤輸入流)  
   static  PrintStream  out;//標準輸出流(顯示器輸出流)  


注意:
(1)System類不能創建對象,只能直接使用它的三個靜態成員。
(2)每當main方法被執行時,就自動生成上述三個對象。

1) 標準輸出流 System.out

   System.out向標準輸出設備輸出數據,其數據類型為PrintStream。方法:

      Void print(參數)
      Void println(參數)

2)標準輸入流 System.in

    System.in讀取標準輸入設備數據(從標準輸入獲取數據,一般是鍵盤),其數 據類型為InputStream。方法:

        int read()  //返回ASCII碼。若,返回值=-1,說明沒有讀取到任何字節讀取工作結束。
         int read(byte[] b)//讀入多個字節到緩沖區b中返回值是讀入的字節數
例如:
復制代碼 代碼如下:

public class StandardInputOutput { 
    public static void main(String args[]) { 
        int b; 
        try { 
            System.out.println("please Input:"); 
            while ((b = System.in.read()) != -1) { 
                System.out.print((char) b); 
            } 
        } catch (IOException e) { 
            System.out.println(e.toString()); 
        } 
    } 


等待鍵盤輸入,鍵盤輸入什么,就打印出什么:

3)標準錯誤流

   System.err輸出標準錯誤,其數據類型為PrintStream??刹殚咥PI獲得詳細說明。

    標準輸出通過System.out調用println方法輸出參數并換行,而print方法輸出參數但不換行。println或print方法都通 過重載實現了輸出基本數據類型的多個方法,包括輸出參數類型為boolean、char、int、long、float和double。同時,也重載實現 了輸出參數類型為char[]、String和Object的方法。其中,print(Object)和println(Object)方法在運行時將調 用參數Object的toString方法。

復制代碼 代碼如下:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class StandardInputOutput { 
    public static void main(String args[]) { 
        String s; 
        // 創建緩沖區閱讀器從鍵盤逐行讀入數據  
        InputStreamReader ir = new InputStreamReader(System.in); 
        BufferedReader in = new BufferedReader(ir); 
        System.out.println("Unix系統: ctrl-d 或 ctrl-c 退出" 
                + "/nWindows系統: ctrl-z 退出"); 
        try { 
            // 讀一行數據,并標準輸出至顯示器  
            s = in.readLine(); 
            // readLine()方法運行時若發生I/O錯誤,將拋出IOException異常  
            while (s != null) { 
                System.out.println("Read: " + s); 
                s = in.readLine(); 
            } 
            // 關閉緩沖閱讀器  
            in.close(); 
        } catch (IOException e) { // Catch any IO exceptions.  
            e.printStackTrace(); 
        } 
    } 

4.java.IO層次體系結構

     在整個Java.io包中最重要的就是5個類和一個接口。5個類指的是File、OutputStream、InputStream、Writer、Reader;一個接口指的是Serializable.掌握了這些IO的核心操作那么對于Java中的IO體系也就有了一個初步的認識了

      Java I/O主要包括如下幾個層次,包含三個部分:

   1.流式部分亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

九九九热精品免费视频观看网站| 国产精品嫩草视频| 亚洲精品小视频在线观看| 国产精品国产三级国产aⅴ浪潮| 久久99热精品这里久久精品| 久久伊人精品一区二区三区| 日韩美女中文字幕| 97在线免费观看| 中文字幕日韩综合av| 久久综合88中文色鬼| 成人精品福利视频| 日本一区二区在线播放| 自拍亚洲一区欧美另类| 亚洲国产美女精品久久久久∴| 日韩欧美亚洲范冰冰与中字| 疯狂蹂躏欧美一区二区精品| 亚洲欧美一区二区精品久久久| 久久在线观看视频| 亚洲欧美日韩一区在线| 日本久久久久亚洲中字幕| 国产精品美女久久久免费| 国产精品亚洲欧美导航| 日本视频久久久| 91精品国产99久久久久久| 日韩电影在线观看免费| 国产69久久精品成人| 欧美日韩国产综合新一区| 日韩免费在线视频| 国产噜噜噜噜噜久久久久久久久| 中文字幕久热精品视频在线| 国产精品美女免费视频| 在线观看视频99| 久久影视电视剧凤归四时歌| 亚洲国产成人在线视频| 久久久久久综合网天天| 亚洲精品一区中文字幕乱码| 亚洲综合在线播放| 久久影视电视剧免费网站| 69久久夜色精品国产69乱青草| 日韩成人性视频| 久久久久日韩精品久久久男男| 欧美一区二区色| 亚洲精品第一国产综合精品| 亚洲欧美制服另类日韩| 国产精品大片wwwwww| 成人av资源在线播放| 色琪琪综合男人的天堂aⅴ视频| 久久久久国产精品一区| 国产欧美日韩综合精品| 5566成人精品视频免费| 欧美有码在线视频| 亚洲男人天堂网站| 在线电影中文日韩| 日本午夜在线亚洲.国产| 777777777亚洲妇女| 国产九九精品视频| 久久深夜福利免费观看| 国产精品专区h在线观看| 成人伊人精品色xxxx视频| 日韩网站免费观看| 国产手机视频精品| 亚洲视频第一页| 国产有码在线一区二区视频| 亚洲欧美日本伦理| 国产suv精品一区二区三区88区| 97视频在线免费观看| 91视频8mav| 亚洲无av在线中文字幕| 国产精品成人av在线| 欧洲成人免费视频| 国产午夜精品一区理论片飘花| 在线精品视频视频中文字幕| 久久久久中文字幕| 日韩一级裸体免费视频| 久久九九免费视频| 日韩av手机在线看| 亚洲www视频| 日韩av大片免费看| 色久欧美在线视频观看| 久久精品国产亚洲精品| 亚洲国产一区二区三区在线观看| 黄网站色欧美视频| 国自产精品手机在线观看视频| 精品动漫一区二区| 久久久久久久国产| 国产成人精品免高潮费视频| 日韩精品中文字幕在线| 91精品视频免费看| 国产成+人+综合+亚洲欧洲| 国产精品白嫩初高中害羞小美女| 欧美韩国理论所午夜片917电影| 久久精品视频va| 免费不卡欧美自拍视频| 视频在线观看一区二区| 国产精品免费观看在线| 亚洲一区中文字幕在线观看| 亚洲第一国产精品| 色综合久久88| 亚洲第一天堂av| 亚洲欧洲在线播放| 欧美性在线观看| 国产精品免费小视频| 国产精品久久在线观看| 亚洲国产精品资源| 国产精品福利网| 国产亚洲成av人片在线观看桃| 中文字幕亚洲国产| 国产精品人人做人人爽| 亚洲精品自拍偷拍| 欧美福利视频在线| 国产亚洲美女久久| 亚洲人午夜精品| 国产999精品视频| 国产精品麻豆va在线播放| 国产精品专区一| 91精品久久久久| 欧美日韩国产一中文字不卡| 欧美激情手机在线视频| 国产精品午夜视频| 欧美在线视频网| 亚洲新声在线观看| 成人看片人aa| 午夜精品久久久久久99热软件| 国产一区二区三区在线观看视频| 国产免费成人av| 国产99久久精品一区二区永久免费| 国产精品www| 久久久女人电视剧免费播放下载| 国产精品69精品一区二区三区| 欧美亚洲国产另类| 国产日韩欧美在线看| 日韩欧美中文在线| 色噜噜狠狠色综合网图区| 777午夜精品福利在线观看| 欧美中文在线字幕| 色综合五月天导航| 久久99亚洲热视| 韩国福利视频一区| 成人午夜高潮视频| 色一区av在线| 色综合天天狠天天透天天伊人| 久久露脸国产精品| 色综合久久88色综合天天看泰| 欧美日韩亚洲精品内裤| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩免费网站| 美乳少妇欧美精品| 国产精品激情av电影在线观看| 精品国偷自产在线视频| 国产精品18久久久久久麻辣| yw.139尤物在线精品视频| 亚洲精品综合精品自拍| 久久人人看视频| 亚洲精品久久久久久久久| 国产欧洲精品视频| 57pao国产精品一区| 国产欧美精品一区二区三区介绍| 成人伊人精品色xxxx视频| 97超级碰在线看视频免费在线看| 久久天天躁狠狠躁夜夜爽蜜月| 久久这里只有精品视频首页| 欧美一区三区三区高中清蜜桃| 欧美电影免费观看高清完整| 久久久国产一区|