真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java實現(xiàn)文件隨機(jī)讀寫-RandomAccessFile-創(chuàng)新互聯(lián)

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

我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、古縣ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的古縣網(wǎng)站制作公司

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

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

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

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

try{

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

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

byte[]  buff=new byte[1024];

//用于保存實際讀取的字節(jié)數(shù)

int hasRead=0;

//循環(huán)讀取

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

 //打印讀取的內(nèi)容,并將字節(jié)轉(zhuǎn)為字符串輸入

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

 }

}catch(Exception e){

     e.printStackTrace();

 }

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

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

RandomAccessFile讀取的效率

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

RandomAccessFile類。其I/O性能較之其它常用開發(fā)語言的同類性能差距甚遠(yuǎn),嚴(yán)重影響程序的運行效率。

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

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

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

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章題目:Java實現(xiàn)文件隨機(jī)讀寫-RandomAccessFile-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/disgig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部