Java流

流分字節流和字符流。非可回退流只能只能往前讀不能往後讀。根據不同的業務需求。API提供了不同的流接口。

我使用字節流讀取文件的時候經常有這個疑問,字節流都是按一個字節或多個字節來進行度流的。一個字節不能表示漢字,假如我用字節流讀取漢字或非英文字母表達的東西怎麼辦呢。
   首先,如果按字節進行讀流,是讀不了完整的單詞的,只能是單詞的一個組成字母。同樣對漢字也是如此,一個表意漢字和一個表意英文單詞都是不能用一個字節來表達的。有區別的時候,漢字在編碼的時候使用了非ANSI編碼,有多個字節組成使用了表達編碼格式來表達。
   英文單詞,也需要通過字母根據一定的標識(譬如空格)來從新組詞。所以從讀表意符號上來講,兩者是沒有區別的。
   所以如果使用字節流來讀中文,一般的應用場景下,都是要根據特殊字符或者特殊標識來識別字節組的頭尾,通過字符串進行編碼轉換來達到讀取中文的目的。同樣讀取英文單詞也是如此,可以根據特殊字符或者特殊標識來識別字節組界限來通過字母來重組單詞。字節流
   是字節的序列,從字節的概念角度上來表達數據,是沒有編碼的概念的,只有字符流或者字節轉字符串的時候才存在編碼概念。
   對於讀取的數據文件,如果不知道到其編碼,通過編碼的手段來探查字符編碼想要做到完全正確是不可能的。未知編碼的情況下,按字符讀文件很容易亂碼。英文字符在ASIN和UTF-8下的編碼方式是同樣的字節來標識,所以給開發者造成一個假象,就是英語字符不會亂碼,
   但是他從理論的角度上是亂碼的,只不過兩者採用了同樣的碼位。

 怎麼快速的讀取大文件


 字符編碼轉換探討

 是否可以使用多線程對大文件實現切割

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章