IO系統(tǒng)

內(nèi)容梗概:

  • Java流式輸入/輸出的原理
  • Java流類的分類
  • 輸入/輸出流類
  • 常見的節(jié)點流和處理流
  • 文件流
  • 緩沖流
  • 數(shù)據(jù)流
  • 轉(zhuǎn)換流
  • Print流
  • Object流

在Java程序中,對于數(shù)據(jù)的輸入/輸出操作以"流"(stream)方式進行:J2SDK提供了各種各樣的"流"類,用以獲取不同種類的數(shù)據(jù):程序中通過標準的方法輸入或輸出數(shù)據(jù)

Paste_Image.png

以上的不同管道都是java的流.

輸入/輸出流的分類.

java.io包中定義了多個流類型(類或抽象類)來實現(xiàn)輸入/輸出功能:可以從不同的角度對其進行分類:

  • 按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流;
  • 按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流;
  • 按照功能不同可以分為節(jié)點流和處理流.

J2SDK 鎖提供的所有流類型位于包java.io內(nèi)都分別繼承自以下四種抽象流類型.
輸入流:InputStream(字節(jié)流Stream) Reader(字符流)
輸出流:OutputStream,Writer.
繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit).

InputStream的基本方法

int read() throws IOException

//讀取一系列字節(jié)并存儲到一個數(shù)組buffer
//返回實際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾返回-1  
int read(byte[] buffer) throws IOException

//讀取length個字節(jié)
//并存儲到一個字節(jié)數(shù)組buffer,從length位置開始
//返回實際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾返回-1
int read(byte[] buffer, int offset(從這個位置開始讀取),
intlength要求讀  幾個字節(jié))   throws IOException

//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException

//跳過n個字節(jié)不讀,返回實際跳過的字節(jié)數(shù)
long skip(long n) throws IOException

OutputStream的基本方法

//向輸出流中寫入一個字節(jié)數(shù)據(jù),該字節(jié)數(shù)據(jù)為參數(shù)b的低8位
void write(int b) throws IOException

//將一個字節(jié)類型的數(shù)組中的數(shù)據(jù)寫入輸出流
void write(byte[] b) throws IOException

//將一個字節(jié)類型的數(shù)組中的從指定位置(off)開始的len個字節(jié)寫入到輸出流
void write(byte[] b,int off, int length) throws IOException

//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException

//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地,防止在內(nèi)存里的數(shù)據(jù)被close中斷掉,.
void flush() throws IOException

在內(nèi)存里裝滿數(shù)據(jù)之后整體寫入硬盤,這樣可以節(jié)約硬盤,一個字節(jié)為8bit,一個字符為16bit,一個漢字是兩個字節(jié)

Reader(16bit)的基本方法

 //讀取一個字符并以正數(shù)的形式返回(0-255)
 //如果返回-1已到輸入流的末尾
 int read() throws IOException
 
 //讀取一系列字符并儲存到一個數(shù)組buffer
 //返回實際讀取的字符數(shù),如果讀取前已經(jīng)到輸入流的末尾返回-1
 int read(char[] chuf) throws IOException

 //讀取length個字符  
 //并存儲到一個數(shù)組buffer,從length位置開始
 //返回實際讀取的字符數(shù),如果讀取前已到輸入流的末尾返回-1
 int read(char[] chuf,int offset,int length) throws IOException
 
 //關(guān)閉流釋放內(nèi)存資源
 void close() throws IOException

 //跳過n個字符不讀,返回實際跳過的字符數(shù)
 long skip(long n) throws IOException

Write的基本方法(toCharArray)

多了一個可以將String輸出String的方法.用的是toCharArray的方法
toCharArray的方法是將字符串轉(zhuǎn)化成字符數(shù)組.相當于spit里的分個拆解字節(jié)......

文件流

    import java.io.*;
    public class TestFileInputStream
    {   public static void main(String[] args)
{   int b = 0;
    FileReader in = null;
    try
    {   in = new FileReader("H:\\java1\\stream\\TestFileInputStream.java");
        
    }
    catch (FileNotFoundException e)
    {   System.out.println("找不到文件");
        System.exit(-1);
    }
    try
    {
        long num = 0;
        while((b=in.read())!=-1)
        {System.out.print((char)b);
         num++;}
        
    
    in.close();
    System.out.println();
    System.out.println ("只讀取了"+num+"個字節(jié)");
    }
    catch (IOException e1)
    {   System.out.println("文件讀取錯誤");System.exit(-1);
    }
}
    }

緩沖流

借鑒代碼和解釋鏈接

數(shù)據(jù)流

Paste_Image.png

Print流

Paste_Image.png
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醇王,一起剝皮案震驚了整個濱河市呢燥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寓娩,老刑警劉巖叛氨,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呼渣,死亡現(xiàn)場離奇詭異,居然都是意外死亡寞埠,警方通過查閱死者的電腦和手機屁置,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畸裳,“玉大人缰犁,你說我怎么就攤上這事〔篮” “怎么了帅容?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伍伤。 經(jīng)常有香客問我并徘,道長,這世上最難降的妖魔是什么扰魂? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任麦乞,我火速辦了婚禮,結(jié)果婚禮上劝评,老公的妹妹穿的比我還像新娘姐直。我一直安慰自己,他們只是感情好蒋畜,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布声畏。 她就那樣靜靜地躺著,像睡著了一般姻成。 火紅的嫁衣襯著肌膚如雪插龄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天科展,我揣著相機與錄音均牢,去河邊找鬼玄叠。 笑死伶贰,一個胖子當著我的面吹牛攻泼,可吹牛的內(nèi)容都是我干的此衅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼包警,長吁一口氣:“原來是場噩夢啊……” “哼娜遵!你這毒婦竟也來了干厚?” 一聲冷哼從身側(cè)響起乎澄,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎测摔,沒想到半個月后置济,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體解恰,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年浙于,在試婚紗的時候發(fā)現(xiàn)自己被綠了护盈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡羞酗,死狀恐怖腐宋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檀轨,我是刑警寧澤胸竞,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站参萄,受9級特大地震影響卫枝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜讹挎,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一校赤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筒溃,春花似錦马篮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烦周,卻和暖如春尽爆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背读慎。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工漱贱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夭委。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓幅狮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親株灸。 傳聞我的和親對象是個殘疾皇子崇摄,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • # Java 流式輸入 輸出原理 # Java 流的分類 # 輸入 輸出 流 類 # 常見的節(jié)點流 和 處理流 #...
    時待吾閱讀 323評論 0 0
  • 在經(jīng)過一次沒有準備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼慌烧,基礎(chǔ)知識卻忘的差不多了逐抑。這是程序員的大忌,沒...
    猿來如癡閱讀 2,839評論 3 10
  • 一屹蚊、流的概念和作用厕氨。 流是一種有順序的进每,有起點和終點的字節(jié)集合,是對數(shù)據(jù)傳輸?shù)目偝苫虺橄竺<磾?shù)據(jù)在兩設(shè)備之間的傳輸...
    布魯斯不吐絲閱讀 10,038評論 2 95
  • 有這么兩個廣為流傳的小實驗田晚,令人震驚: 【玻璃杯里的跳蚤】 把一只小跳蚤,用玻璃杯反扣在桌面上国葬。 (提供空氣流通...
    connan柯南閱讀 534評論 0 1
  • 《管道的故事》贤徒,薄薄的一本書,真是有著大智慧汇四。在工作上和生活中接奈,我們大多數(shù)是提桶者,兢兢業(yè)業(yè)的工作船殉,換取每...
    楊黎黎Lily閱讀 438評論 3 0