日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java io流_浅谈IO流(一)-流的基本概念以及java的常见流

發(fā)布時(shí)間:2025/3/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java io流_浅谈IO流(一)-流的基本概念以及java的常见流 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于任何程序設(shè)計(jì)語言而言,輸入輸出(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)行抽象、屏蔽外部的差異,從而實(shí)現(xiàn)更加便捷的編程。

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

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

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

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

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

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

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

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

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

數(shù)據(jù)源:

數(shù)據(jù)源data source,提供數(shù)據(jù)的原始媒介。常見的數(shù)據(jù)源有:數(shù)據(jù)庫、文件、其他程序、內(nèi)存、網(wǎng)絡(luò)連接、IO設(shè)備。如圖10-1所示。

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

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

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

數(shù)據(jù)源示意圖

流的概念:

流是一個(gè)抽象、動(dòng)態(tài)的概念,是一連串連續(xù)動(dòng)態(tài)的數(shù)據(jù)集合。

對(duì)于輸入流而言,數(shù)據(jù)源就像水箱,流(stream)就像水管中流動(dòng)著的水流,程序就是我們最終的用戶。我們通過流(A Stream)將數(shù)據(jù)源(Source)中的數(shù)據(jù)(information)輸送到程序(Program)中。

對(duì)于輸出流而言,目標(biāo)數(shù)據(jù)源就是目的地(dest),我們通過流(A Stream)將程序(Program)中的數(shù)據(jù)(information)輸送到目的數(shù)據(jù)源(dest)中。

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

注意:

輸入/輸出流的劃分是相對(duì)程序而言的,并不是相對(duì)數(shù)據(jù)源。

Java為我們提供了多種多樣的IO流,我們可以根據(jù)不同的功能及性能要求挑選合適的IO流,如下圖所示,為Java中IO流類的體系。

注:這里只列出常用的類,詳情可以參考JDK API文檔。粗體標(biāo)注為常用!

Java中的IO流體系

從上圖發(fā)現(xiàn),很多流都是成對(duì)出現(xiàn)的,比如:FileInputStream/FileOutputStream,顯然是對(duì)文件做輸入和輸出操作的。我們下面簡(jiǎn)單做個(gè)總結(jié):

1. InputStream/OutputStream

字節(jié)流的抽象類。

2. Reader/Writer

字符流的抽象類。

3. FileInputStream/FileOutputStream

節(jié)點(diǎn)流:以字節(jié)為單位直接操作“文件”。

4. ByteArrayInputStream/ByteArrayOutputStream

節(jié)點(diǎn)流:以字節(jié)為單位直接操作“字節(jié)數(shù)組對(duì)象”。

5. ObjectInputStream/ObjectOutputStream

處理流:以字節(jié)為單位直接操作“對(duì)象”。

6. DataInputStream/DataOutputStream

處理流:以字節(jié)為單位直接操作“基本數(shù)據(jù)類型與字符串類型”。

7. FileReader/FileWriter

節(jié)點(diǎn)流:以字符為單位直接操作“文本文件”(注意:只能讀寫文本文件)。

8. BufferedReader/BufferedWriter

處理流:將Reader/Writer對(duì)象進(jìn)行包裝,增加緩存功能,提高讀寫效率。

9. BufferedInputStream/BufferedOutputStream

處理流:將InputStream/OutputStream對(duì)象進(jìn)行包裝,增加緩存功能,提高 讀寫效率。

10. InputStreamReader/OutputStreamWriter

處理流:將字節(jié)流對(duì)象轉(zhuǎn)化成字符流對(duì)象。

11. PrintStream

處理流:將OutputStream進(jìn)行包裝,可以方便地輸出字符,更加靈活。

------------------注:此并非作者原創(chuàng),引自尚學(xué)堂文檔,若有興趣可報(bào)名尚學(xué)堂

------------------------------------------------------------------------百戰(zhàn)卓越028天

總結(jié)

以上是生活随笔為你收集整理的java io流_浅谈IO流(一)-流的基本概念以及java的常见流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。