html文件的下載,如何使用字節流,如何使用轉換流

轉換流的作用就是將我們的字節流轉換成字符流

html文件的下載,如何使用字節流,如何使用轉換流

字節流是可以處理一切內容的,包括圖片,音頻,視頻,也包括純文本,在很多系統和框架的底層返回給我們的都是字節流(有時候我們使用字節流處理並不方便,這就是我們為什麼要轉換字符流的原因)

System.in,System.out都是字節流,因為我們鍵盤輸入還是輸出的都是字符串,所以我們可以對它進行轉換。

在我們的底層,如果是純文本的話就涉及到一個東西是字符集。將字節轉成字符叫做解碼(在解碼的過程中就涉及到字符集的問題,如果工程的字符集跟源頭(文件)的字符集不統一就會出現亂碼),所以這個時候我們最好可以指定字符集

html文件的下載,如何使用字節流,如何使用轉換流

從字節流到字符流的轉換

html文件的下載,如何使用字節流,如何使用轉換流

只要我們看見Reader都建議加一個BufferedReader

html文件的下載,如何使用字節流,如何使用轉換流

將寫入的字符編碼為字節

講一下什麼使用字節流,什麼時候使用字符流

其實底層都是字節,我們使用字符是為了處理一些文本和字符串提高性能字符流處理的單元為2個字節的Unicode字符,分別操作字符、字符數組或字符串,而字節流處理單元為1個字節,操作字節和字節數組。所以字符流是由Java虛擬機將字節轉化為2個字節的Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是音頻文件、圖片、歌曲,就用字節流好點,如果是關係到中文(文本)的,用字符流好點 所有文件的儲存是都是字節(byte)的儲存,在磁盤上保留的並不是文件的字符而是先把字符編碼成字節,再儲存這些字節到磁盤。在讀取文件(特別是文本文件)時,也是一個字節一個字節地讀取以形成字節序列

字節流和字符流的使用:


Java IO流中提供了兩種用於將字節流轉換為字符流的轉換流。其中InputStreamReader用於將字節輸入流轉換為字符輸入流,其中OutputStreamWriter用於將字節輸出流轉換為字符輸出流。使用轉換流可以在一定程度上避免亂碼,還可以指定輸入輸出所使用的字符集


html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

講一下緩存流和轉換流的結合,看見Reader我們就可以使用緩存流提高性能

html文件的下載,如何使用字節流,如何使用轉換流

使用轉換流實現字節到字符的轉換以及輸入和輸出

· 節點流:可以從或向一個特定的地方(節點)讀寫數據。如FileReader.

· 處理流:是對一個已存在的流的連接和封裝,通過所封裝的流的功能調用實現數據讀寫。如BufferedReader.處理流的構造方法總是要帶一個其他的流對象做參數。一個流對象經過其他流的多次包裝,稱為流的鏈接。

講一下什麼是節點流

字符流和字節流就可以叫做節點流

html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

html文件的下載,如何使用字節流,如何使用轉換流

出現亂碼的原因有兩種:

1.字節數不夠出現亂碼

2.字符集不統一出現亂碼

html文件的下載,如何使用字節流,如何使用轉換流

在java中文件的傳輸其實就是靠流來實現的,網絡流也是屬於字節流,所以我們先使用字節流

我覺得寫的時候應該是全部都寫出來才寫的,具體debug才知道,我這裡就不弄了

為什麼讀取的時候亂碼,寫入的時候不亂碼

忽然一下子自己就懂了,總之寫入的時候只要講字符集設置的和源頭的文件一致就可以了


分享到:


相關文章: