亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 實現文件隨機讀寫-RandomAccessFile

發布時間:2020-06-30 06:44:46 來源:網絡 閱讀:1203 作者:17099933344 欄目:軟件技術

RandomAccessFile是Java中輸入,輸出流體系中功能最豐富的文件內容訪問類,它提供很多方法來操作文件,包括讀寫支持,與普通的IO流相比,它最大的特別之處就是支持任意訪問的方式,程序可以直接跳到任意地方來讀寫數據。

如果我們只希望訪問文件的部分內容,而不是把文件從頭讀到尾,使用RandomAccessFile將會帶來更簡潔的代碼以及更好的性能。

下面來看下RandomAccessFile類中比較重要的2個方法,其他的和普通IO類似,在這里,就不詳細說明了。

方法名作用
getFilePointer()返回文件記錄指針的當前位置
seek(long pos)將文件記錄指針定位到pos的位置

功能one,讀取任意位置的數據,代碼如下
public static void randomRed(String path,int pointe){ 

try{  

RandomAccessFile raf=new RandomAccessFile(path, "r");  

raf.seek(pointe);//移動文件指針位置  

byte[]  buff=new byte[1024];  

//用于保存實際讀取的字節數  

int hasRead=0; 

//循環讀取 

while((hasRead=raf.read(buff))>0){ 

 //打印讀取的內容,并將字節轉為字符串輸入

System.out.println(new String(buff,0,hasRead));  

 }

}catch(Exception e){  

          e.printStackTrace();  

  }  

至此,RandomAccessFile類的幾個功能,散仙在代碼中已給出實現了,現在回到本文開始前的提的那個需求,用RandomAccessFile類就可以輕而易舉的完成了,另外需要注意的是,向指定位置插入數據,是散仙自己改造的功能,RandomAccessFile并不直接支持,需要新建一個緩沖區臨時空間,存數據,然后在寫,因為一旦數據量上了級別,在任意位置插入數據,是很耗內存的,這個也就是為什么hadoop的HDFS文件系統,只支持append的方式,而沒有提供修改的操作。


另外我們可以用RandomAccessFile這個類,來實現一個多線程斷點下載的功能,用過下載工具的朋友們都知道,下載前都會建立兩個臨時文件,一個是與被下載文件大小相同的空文件,另一個是記錄文件指針的位置文件,每次暫停的時候,都會保存上一次的指針,然后斷點下載的時候,會繼續從上一次的地方下載,從而實現斷點下載或上傳的功能,有興趣的朋友們可以自己實現下。


RandomAccessFile讀取的效率

比較Scanner和RandomAccessFile的效率,使用Scanner按行讀取文件效率高好多好多倍,內存占用高一點點而已;而使用RandomAccessFile按行讀取數據效率極低,推薦使用Scanner。

RandomAccessFile類。其I/O性能較之其它常用開發語言的同類性能差距甚遠,嚴重影響程序的運行效率。


在改進之前先做一個基本測試:逐字節COPY一個12兆的文件(這里牽涉到讀和寫)。


耗用時間(秒)
RandomAccessFileRandomAccessFile95.848
BufferedInputStream + DataInputStreamBufferedOutputStream + DataOutputStream2.935


我們可以看到兩者差距約32倍,RandomAccessFile也太慢了。由其源碼可見,RandomAccessFile每讀/寫一個字節就需對磁盤進行一次I/O操作。





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安康市| 玉龙| 巧家县| 河间市| 铜川市| 裕民县| 宁国市| 汪清县| 五峰| 宣汉县| 新昌县| 天镇县| 米脂县| 南康市| 舟曲县| 南昌县| 海兴县| 嵊州市| 于田县| 阿城市| 新兴县| 山阳县| 印江| 新竹县| 石楼县| 旌德县| 湛江市| 罗山县| 绥化市| 图们市| 铜梁县| 珠海市| 瑞昌市| 静乐县| 奎屯市| 泗阳县| 景谷| 鹿邑县| 平泉县| 汉源县| 庆元县|