溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

10.1-全棧Java筆記:最全面的IO技術(shù)(一)

發(fā)布時間:2020-06-19 21:24:31 來源:網(wǎng)絡(luò) 閱讀:302 作者:全棧Java 欄目:數(shù)據(jù)庫

IO技術(shù)

對于任何程序設(shè)計語言而言,輸入輸出(Input/Output)系統(tǒng)都是非常核心的功能。程序運(yùn)行需要數(shù)據(jù),數(shù)據(jù)的獲取往往需要跟外部系統(tǒng)進(jìn)行通信,外部系統(tǒng)可能是文件、數(shù)據(jù)庫、其他程序、網(wǎng)絡(luò)、IO設(shè)備等等。

外部系統(tǒng)比較復(fù)雜多變,那么我們有必要通過某種手段進(jìn)行抽象、屏蔽外部的差異,從而實現(xiàn)更加便捷的編程。

輸入(Input)指的是:可以讓程序從外部系統(tǒng)獲得數(shù)據(jù)(核心含義是“讀”,讀取外部數(shù)據(jù))。常見的應(yīng)用:

1) 讀取硬盤上的文件內(nèi)容到程序。例如:播放器打開一個視頻文件、word打開一個doc文件。

2) 讀取網(wǎng)絡(luò)上某個位置內(nèi)容到程序。例如:瀏覽器中輸入網(wǎng)址后,打開該網(wǎng)址對應(yīng)的網(wǎng)頁內(nèi)容;下載網(wǎng)絡(luò)上某個網(wǎng)址的文件。

3) 讀取數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)到程序。

4) 讀取某些硬件系統(tǒng)數(shù)據(jù)到程序。例如:車載電腦讀取雷達(dá)掃描信息到程序;溫控系統(tǒng)

輸出(Output)指的是:程序輸出數(shù)據(jù)給外部系統(tǒng)從而可以操作外部系統(tǒng)(核心含義是“寫”,將數(shù)據(jù)寫出到外部系統(tǒng))。常見的應(yīng)用有:

5) 將數(shù)據(jù)寫到硬盤中。 例如:我們編輯完一個word文檔后,將內(nèi)容寫到硬盤上進(jìn)行保存。

6) 將數(shù)據(jù)寫到數(shù)據(jù)庫系統(tǒng)中。例如:我們注冊一個網(wǎng)站會員,實際就是后臺程序向數(shù)據(jù)庫中寫入一條記錄。

7)將數(shù)據(jù)寫到某些硬件系統(tǒng)中。例如:×××系統(tǒng)導(dǎo)航程序?qū)⑿碌穆窂捷敵龅斤w控子系統(tǒng),飛控子系統(tǒng)根據(jù)數(shù)據(jù)修正飛行路徑。

 

java.io包為我們提供了相關(guān)的API,實現(xiàn)了對所有外部系統(tǒng)的輸入輸出操作,這就是我們這章所要學(xué)習(xí)的技術(shù)。

基本概念和IO入門

數(shù)據(jù)源

數(shù)據(jù)源data source,提供數(shù)據(jù)的原始媒介。

常見的:數(shù)據(jù)庫、文件、其他程序、內(nèi)存、網(wǎng)絡(luò)連接、IO設(shè)備。

數(shù)據(jù)源分為:源設(shè)備、目標(biāo)設(shè)備。

源設(shè)備:為程序提供數(shù)據(jù),一般對應(yīng)輸入流。

目標(biāo)設(shè)備:程序數(shù)據(jù)的目的地,一般對應(yīng)輸出流。

流的概念

數(shù)據(jù)源就像水箱,流(stream)就像水管中流著的水流,程序就是我們最終的用戶。 流是一個抽象、動態(tài)的概念,是一連串連續(xù)動態(tài)的數(shù)據(jù)集合。

流與源數(shù)據(jù)源和目標(biāo)數(shù)據(jù)源之間的關(guān)系

 第一個簡單的IO流程序及深入

當(dāng)程序需要讀取數(shù)據(jù)源的數(shù)據(jù)時,就會通過IO流對象開啟一個通向數(shù)據(jù)源的流,通過這個IO流對象相關(guān)方法可以順序讀取流中的數(shù)據(jù)。

【示例1 通過流對象從一個文件中讀取數(shù)據(jù)(只用于測試,不規(guī)范的寫法)

import java.io.*;

 

public class Demo01 {

    public static void main(String[] args) {

        try {

             FileInputStream  fis = new    FileInputStream("d:/a.txt");  //文件內(nèi)容是:abc

             int s1 = fis.read();    //打印輸入字符a對應(yīng)的ascii碼值97

             int s2 = fis.read();     //打印輸入字符a對應(yīng)的ascii碼值98

             int s3 = fis.read();     //打印輸入字符a對應(yīng)的ascii碼值99

             int s4 = fis.read();     //由于文件內(nèi)容已經(jīng)讀取完畢,返回-1

             System.out.println(s1);

             System.out.println(s2);

             System.out.println(s3);

             System.out.println(s4);

 

             fis.close();            

        //流對象使用完,必須關(guān)閉!不然,總占用系統(tǒng)資源,最終會造成系統(tǒng)崩潰!

        } catch (Exception e) {

             e.printStackTrace();

        }

    }

}

【示例2】通過流對象從一個文件中讀取數(shù)據(jù)(經(jīng)典代碼,一定要掌握)

import java.io.*;

 

public class Demo02 {

    public static void main(String[] args) {

        FileInputStream  fis =null;

        try {

             fis = new    FileInputStream("d:/a.txt");  //內(nèi)容是:abc

             StringBuilder sb = new StringBuilder();

             int temp = 0;

             while((temp=fis.read())!=-1){

                 sb.append((char)temp);

             }

             System.out.println(sb); 

        } catch (Exception e) {

             e.printStackTrace();

        }finally{

             try{

                 if(fis!=null){

                     fis.close();

//流對象,使用完后必須關(guān)閉!!這種寫法,保證了即使遇到異常情況,也會關(guān)閉流對象。

                  }  

             }catch(IOException e){

                 e.printStackTrace();

             }

        }

    }

}

老鳥建議:

    如上代碼是一段非常典型的IO流代碼,其他流對象的使用也基本是同樣的模式!

本節(jié)我們先講到這里,下節(jié)我們繼續(xù)聊~~





「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。


 筆記包含從淺入深的六大部分:

  A-Java入門階段

  B-數(shù)據(jù)庫從入門到精通

  C-手刃移動前端和Web前端

  D-J2EE從了解到實戰(zhàn)

  E-Java高級框架精解

  F-Linux和Hadoop 




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI