成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

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

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

下面來看下RandomAccessFile類中比較重要的2個(gè)方法,其他的和普通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);//移動(dòng)文件指針位置

byte[]  buff=new byte[1024];

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

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

RandomAccessFile讀取的效率

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

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

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

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

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

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

當(dāng)前標(biāo)題:Java實(shí)現(xiàn)文件隨機(jī)讀寫-RandomAccessFile-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://jinyejixie.com/article6/disgig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
滦平县| 惠东县| 大丰市| 贺兰县| 彰武县| 邹平县| 镇江市| 永泰县| 古交市| 新源县| 新源县| 揭东县| 乳山市| 南靖县| 湾仔区| 巫溪县| 宜春市| 神池县| 左贡县| 青浦区| 台中市| 宁都县| 高陵县| 耿马| 马鞍山市| 石嘴山市| 大连市| 织金县| 斗六市| 山西省| 齐河县| 奉节县| 临泽县| 阿图什市| 锦州市| 东辽县| 大田县| 松溪县| 砀山县| 徐州市| 海城市|