課程
/后端開發
/Java
/文件傳輸基礎——Java IO流
老師的代碼中只寫了字節的復制,為什么在文件中可以直接顯示字符串呢?
2017-01-04
源自:文件傳輸基礎——Java IO流 4-3
正在回答
還是數據編碼及存儲的原理還沒有搞清楚.^_^ 首先,我們用鍵盤寫文件時,是以輸入碼進行輸入的,比如拼音類的輸入法,或者是五筆字形輸入法,輸入之后,它會把你要輸入進去的字符保存成機內碼,也就是0 1所組成的機內碼,因為計算機只認識這種01 編碼的二進制碼. 當然對西方字符的話,相對字符少,最常用的ASCII編碼規則(8*16的矩陣),已經可以涵蓋所有的西文字符. 而對于中文字符,就復雜些,因為光漢字就有成千上萬個,所以又需要另外一套編碼規則,將所有這些中文字符涵蓋進去,說白了,就是給每一個漢字附一個唯一的二進制碼.就像上學時的學號,每一個人的學號是唯一的,而且這個學號是沒有太大意義的,它就像一個索引或者指針似的,指向它所代表的那個學生,同理,這里的每一個二進制編碼也是一樣的道理. 以上這是向計算機輸入字符時由字符向二進制的轉換過程;
輸出的過程,其實就是它的反向過程.你是按照哪個編碼規則輸入的,那么你讀取的時候也必須按相同的編碼規則去讀取,也即解碼過程. 還是上面說的,你如果用另外一套編碼規則去解碼,那么相同的一個字節的編碼在另外一套編碼規則中所指向的很可能就是另外的一個字符了(除非這兩套編碼規則是兼容的).?
回到你的問題:計算機顯示的時候其實已經是默認包含了這個解碼的過程.如果不解碼,那么我們看到的就是01所組成的二進制串,是沒有辦法閱讀,修改的. 當你面對著一屏幕的010101...時,相信你內心是崩潰的@_@. 而且,我們在寫文件時,它是有一個默認的編碼規則的,比如gbk,utf-8等,這個信息肯定是包含在文件中的.每個平臺都有默認的編碼規則.
推薦: <大學計算機基礎>中的章節3: 數據在計算機中的表示. 非?;A但是非常重要.^_^
qq_HelloWrold_03491955 提問者
有你們前面的路好走的多。
補充:代碼所操作的只是文件在計算機中存儲的機內碼(0&1)序列,也即字節序列.而查看時,所用的軟件,記事本/寫字版等等,肯定都是帶有這種轉換功能的.
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內容
2 回答JAVA字符流為什么沒有把文件復制?
3 回答getBytes()方法是把字符串轉成二進制嗎?
1 回答字符與字符串的輸入!
2 回答為什么這里將字符數組轉變成字符串不能用toString()方法?
2 回答字節流與字符流問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-01-04
還是數據編碼及存儲的原理還沒有搞清楚.^_^ 首先,我們用鍵盤寫文件時,是以輸入碼進行輸入的,比如拼音類的輸入法,或者是五筆字形輸入法,輸入之后,它會把你要輸入進去的字符保存成機內碼,也就是0 1所組成的機內碼,因為計算機只認識這種01 編碼的二進制碼. 當然對西方字符的話,相對字符少,最常用的ASCII編碼規則(8*16的矩陣),已經可以涵蓋所有的西文字符. 而對于中文字符,就復雜些,因為光漢字就有成千上萬個,所以又需要另外一套編碼規則,將所有這些中文字符涵蓋進去,說白了,就是給每一個漢字附一個唯一的二進制碼.就像上學時的學號,每一個人的學號是唯一的,而且這個學號是沒有太大意義的,它就像一個索引或者指針似的,指向它所代表的那個學生,同理,這里的每一個二進制編碼也是一樣的道理. 以上這是向計算機輸入字符時由字符向二進制的轉換過程;
輸出的過程,其實就是它的反向過程.你是按照哪個編碼規則輸入的,那么你讀取的時候也必須按相同的編碼規則去讀取,也即解碼過程. 還是上面說的,你如果用另外一套編碼規則去解碼,那么相同的一個字節的編碼在另外一套編碼規則中所指向的很可能就是另外的一個字符了(除非這兩套編碼規則是兼容的).?
回到你的問題:計算機顯示的時候其實已經是默認包含了這個解碼的過程.如果不解碼,那么我們看到的就是01所組成的二進制串,是沒有辦法閱讀,修改的. 當你面對著一屏幕的010101...時,相信你內心是崩潰的@_@. 而且,我們在寫文件時,它是有一個默認的編碼規則的,比如gbk,utf-8等,這個信息肯定是包含在文件中的.每個平臺都有默認的編碼規則.
推薦: <大學計算機基礎>中的章節3: 數據在計算機中的表示. 非?;A但是非常重要.^_^
2017-01-10
有你們前面的路好走的多。
2017-01-04
補充:代碼所操作的只是文件在計算機中存儲的機內碼(0&1)序列,也即字節序列.而查看時,所用的軟件,記事本/寫字版等等,肯定都是帶有這種轉換功能的.