日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java流类图结构_java学习之IO流(学习之旅,一)

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java流类图结构_java学习之IO流(学习之旅,一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

個人在學習IO流的時候看到如下所示java 流類圖結構的時候,我的感想是,這么多··處于蒙的狀態。

Java流類圖結構

這么多,沒有分類不好學,那我們就慢慢一口一口的吃,這樣每天學習一點就好了,其實很多類并不是常用的。

縷清思路很重要的,那么我轉一篇百度的文檔,寫的思路很清晰。

第一步,首先,明確IO流中有兩個主要的體系,即字節輸入流(InputStream)、輸出流(OutputStream)和字符輸入流(Reader)、輸出流(Writer)。其次,明確數據的來源和數據將要到達的目的地。

為啥要有字節流和字符流呢?多麻煩?

自然是有原因的:字節流能處理所有類型的數據(如圖片、avi等),而字符流只能處理字符類型的數據。

字節流:一次讀入或讀出是8位二進制。? ? ? 字符流:一次讀入或讀出是16位二進制。

第二步,明確將要操作的數據是否是純文本數據。如果數據源是純文本數據選Reader;數據源不是純文本數據選擇InputStream。如果數據目的地是純文本數據就選擇Writer;如果不是則選擇OutputStream。

第三步,明確具體的設備。即數據源是從哪個設備來的:是硬盤就加File;是鍵盤用System.in(是一個InputStream對象);是內存用數組;是網絡用Socket流。同樣目的是哪個設備:是硬盤就加File;是鍵盤用System.out(是一個OutoutStream對象);是內存用數組;是網絡用Socket流。

第四步,明確是否還需要其他額外功能呢,例如①是否需要較高的效率,即是否需要使用緩沖區,是就加上Buffered;②是否需要轉換,是,就使用轉換流,InputStreamReader 和OutputStreamWriter。

下面給出例子,具體的用法

上面百度文檔已經介紹的很清楚了,不過我還想更加詳細的了解一下輸入流和輸出流。在這里只介紹比較常用的方法,因為學習需要慢慢來·····

輸入字節流 InputStream

InputStream? ? ? 是所有的輸入字節流的父類,它是一個抽象類。(做什么用的呢?是個抽象類,不是接口,后期再研究)

下面我要考慮了,其實文件的輸出輸入是比較容易混的。那么我們怎么區分呢?

這樣,不管是輸入還是輸出,都是真對內存來說的,什么意思呢?

解釋一下:如果我們要上傳一個文件,有三個步驟。第一,讀取本地文件,就是先把硬盤上面的文件讀取到內存中,那么真對內存來說就是用輸入流(inputStream);第二,再把內存中的文件輸出(outStream),真對內存來說就是從內存輸出到服務器的硬盤上。

ByteArrayInputStream 、StringBufferInputStream、FileInputStream?是三種基本的介質流,它們分別從Byte 數組、StringBuffer、和本地文件中讀取數據。

其他兩種沒用過,?只就是??FileInputStream ,文件的上傳和下載用的都是這種流。

輸出字節流 OutputStream

OutputStream??是所有的輸出字節流的父類,它是一個抽象類。(和上面對應的==不懂,后期研究==)

這次寫文件下載用的就是這個父類。下面給出代碼

//創建輸出流

OutputStream out =response.getOutputStream();//創建數組

byte buffer[] = new byte[1024];int len = 0;//循環將輸入流中的內容讀取到緩沖區當中

while((len=in.read(buffer))>0){//輸出緩沖區的內容到瀏覽器,實現文件下載

out.write(buffer, 0, len);

}

用FileOutputStream 應該也是可以的吧,不過這就要指定具體的那個路徑進行文件寫出,也就是往硬盤寫入。

在此,我有個疑問,byte buffer[] 是否是緩沖區?

答案;不是緩沖流,不確定緩沖區做什么用的,后期再研究。

緩沖流:有四個,當然是字節緩沖輸入流BufferedInputStrean、字節緩沖輸出流OutputStreamWriter、 和字符的?BufferedReader、?BufferedWriter?增加緩沖功能,避免頻繁讀寫硬盤。

緩沖流大小通常是根據文件大小來進行匹配的,如果不進行設置有個默認值

今天就到這吧

總結

以上是生活随笔為你收集整理的java流类图结构_java学习之IO流(学习之旅,一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。