0
FileInputStream的讀取方法每次讀取1個字節,但是它正在讀取文件中的字符,因爲java中的字符大小是(16位-2字節)。是否因爲讀取方法是原生的,它會轉換爲8位?通過文件IO操作讀取一個字節
FileInputStream的讀取方法每次讀取1個字節,但是它正在讀取文件中的字符,因爲java中的字符大小是(16位-2字節)。是否因爲讀取方法是原生的,它會轉換爲8位?通過文件IO操作讀取一個字節
read
方法FileInputStream
閱讀器返回一個int
(相當於一個byte
),而不是一個字符。將結果轉換爲角色是你的責任。
由於javadoc的FileInputStream
建議:「用於讀取字符流,請考慮使用FileReader」。
字符編碼的字節數取決於文件的編碼。例如,如果文件使用ASCII進行編碼,則每個字節都是一個字符,但是如果您的文件使用UTF-8編碼,則一個字符的長度爲1,2,3或4個字節。
如果您想了解更多關於編碼的信息,我建議您閱讀以下文章:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。
你的問題很不清楚。 「誰在閱讀文件中的人物」是什麼意思?請注意,僅僅因爲Java中char的內部表示是16位,並不意味着它在二進制編碼表示中總是16位。另請注意,FileInputStream是關於讀*字節*,而不是*字符*。 – 2013-04-11 06:05:21
如果您想閱讀字符,可以使用[Reader.read()](http://docs.oracle.com/javase/6/docs/api/java/io/Reader.html#read()) – 2013-04-11 06:07:09
文件只包含一個字節流。你可以將它們組合成字符,int,long,double或任何更大的類型,但是如何做到這一點真的取決於你。注意:編碼時,char可以使用1,2或3個字節。 – 2013-04-11 07:25:46