本文詳細說明文件讀取時,read()中參數的解釋,可直接滑到文尾看總結.
f.read()讀取文件的整個内容,返回的是字符串
如果一次性讀取比如10G的文件,内存就直接爆了,所以需要限制單次讀取的大小.
read()可接收size參數,在官方文檔提示中
官方文檔提示的size參數
size參數是整數型,如果不設置.默認f,read()默認讀取字節數-1
也就是說在文件管理器中,顯示為字節數量為x,那麼默認size的值為x-1
文件管理中的文件屬性,紅框中的值減1就是size值
-----------------------
案例一:
讀取下面這個文件的内容
箭頭所指就是文件的末尾
代碼及其運行結果如下:
265997字節内容全部讀取到并輸出了
-----------------------
案例二:
依舊是讀取上面那個265 997 字節大小的文件
代碼及其運行結果如下:
讀取1024 * 87 100 輸出的内容
從圖中可以看到:
實際是265,997 字節(約為259k)大小的文件,
隻讀取1024 * 87 100字節(約87k)就輸出了所有的内容 !
不是說好的size值多大就讀取多少文件内容嗎?怎麼設置比size小的多的值也讀取了全部的文件内容?且看案例三:
-----------------------
案例三:代碼及其運行結果
代碼及其結果
這次讀取的内容的大小為 整個内容的字符串長度,依舊成功輸出了幾乎(少4個字)全部的内容.
到這應該能明白了,
在utf-8的編碼的文本中,一個漢字占三個字節,一個英文字母占一個字節.
又由于在文本文件讀取模式,size的計數是以Unicode字符的個數計數的,
也就是說列舉的三個案例size的計數不是字節,而是字符.
-----------------------
繞了這麼多彎子,總結.
讀取文件限制最大讀取大小時,要注意
在文本文件讀取模式,size的計數是以Unicode字符的個數計數的,
在二進制文件讀取模式下,size計數是以字節為單位計數。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!