java io流_浅谈IO流(一)-流的基本概念以及java的常见流
對于任何程序設計語言而言,輸入輸出(Input/Output)系統都是非常核心的功能。程序運行需要數據,數據的獲取往往需要跟外部系統進行通信,外部系統可能是文件、數據庫、其他程序、網絡、IO設備等等。外部系統比較復雜多變,那么我們有必要通過某種手段進行抽象、屏蔽外部的差異,從而實現更加便捷的編程。
輸入(Input)指的是:可以讓程序從外部系統獲得數據(核心含義是“讀”,讀取外部數據)。常見的應用:
? 讀取硬盤上的文件內容到程序。例如:播放器打開一個視頻文件、word打開一個doc文件。
? 讀取網絡上某個位置內容到程序。例如:瀏覽器中輸入網址后,打開該網址對應的網頁內容;下載網絡上某個網址的文件。
? 讀取數據庫系統的數據到程序。
? 讀取某些硬件系統數據到程序。例如:車載電腦讀取雷達掃描信息到程序;溫控系統等。
輸出(Output)指的是:程序輸出數據給外部系統從而可以操作外部系統(核心含義是“寫”,將數據寫出到外部系統)。常見的應用有:
? 將數據寫到硬盤中。例如:我們編輯完一個word文檔后,將內容寫到硬盤上進行保存。
? 將數據寫到數據庫系統中。例如:我們注冊一個網站會員,實際就是后臺程序向數據庫中寫入一條記錄。
? 將數據寫到某些硬件系統中。例如:導彈系統導航程序將新的路徑輸出到飛控子系統,飛控子系統根據數據修正飛行路徑。
數據源:
數據源data source,提供數據的原始媒介。常見的數據源有:數據庫、文件、其他程序、內存、網絡連接、IO設備。如圖10-1所示。
數據源分為:源設備、目標設備。
1. 源設備:為程序提供數據,一般對應輸入流。
2. 目標設備:程序數據的目的地,一般對應輸出流。
數據源示意圖
流的概念:
流是一個抽象、動態的概念,是一連串連續動態的數據集合。
對于輸入流而言,數據源就像水箱,流(stream)就像水管中流動著的水流,程序就是我們最終的用戶。我們通過流(A Stream)將數據源(Source)中的數據(information)輸送到程序(Program)中。
對于輸出流而言,目標數據源就是目的地(dest),我們通過流(A Stream)將程序(Program)中的數據(information)輸送到目的數據源(dest)中。
流與源數據源和目標數據源之間的關系
注意:
輸入/輸出流的劃分是相對程序而言的,并不是相對數據源。
Java為我們提供了多種多樣的IO流,我們可以根據不同的功能及性能要求挑選合適的IO流,如下圖所示,為Java中IO流類的體系。
注:這里只列出常用的類,詳情可以參考JDK API文檔。粗體標注為常用!
Java中的IO流體系
從上圖發現,很多流都是成對出現的,比如:FileInputStream/FileOutputStream,顯然是對文件做輸入和輸出操作的。我們下面簡單做個總結:
1. InputStream/OutputStream
字節流的抽象類。
2. Reader/Writer
字符流的抽象類。
3. FileInputStream/FileOutputStream
節點流:以字節為單位直接操作“文件”。
4. ByteArrayInputStream/ByteArrayOutputStream
節點流:以字節為單位直接操作“字節數組對象”。
5. ObjectInputStream/ObjectOutputStream
處理流:以字節為單位直接操作“對象”。
6. DataInputStream/DataOutputStream
處理流:以字節為單位直接操作“基本數據類型與字符串類型”。
7. FileReader/FileWriter
節點流:以字符為單位直接操作“文本文件”(注意:只能讀寫文本文件)。
8. BufferedReader/BufferedWriter
處理流:將Reader/Writer對象進行包裝,增加緩存功能,提高讀寫效率。
9. BufferedInputStream/BufferedOutputStream
處理流:將InputStream/OutputStream對象進行包裝,增加緩存功能,提高 讀寫效率。
10. InputStreamReader/OutputStreamWriter
處理流:將字節流對象轉化成字符流對象。
11. PrintStream
處理流:將OutputStream進行包裝,可以方便地輸出字符,更加靈活。
------------------注:此并非作者原創,引自尚學堂文檔,若有興趣可報名尚學堂
------------------------------------------------------------------------百戰卓越028天
總結
以上是生活随笔為你收集整理的java io流_浅谈IO流(一)-流的基本概念以及java的常见流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript笔记-点击butto
- 下一篇: Python笔记-相关性分析(连续变量和