日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java-io之RandomAccessFile

發布時間:2024/4/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java-io之RandomAccessFile 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

RandomAccessFile

java提供了一個可以對文件隨機訪問的操作,訪問包括讀和寫操作。

?該類名為RandomAccessFile。該類的讀寫是基于指針的操作。

RandomAccessFile在對文件進行隨機訪問操作時有兩個模式,

?分別為只讀模式(r),和讀寫模式(rw)

?在創建RandomAccessFile時,需要給傳入加兩個參數:

? 1、 操作的文件(文件路徑String,File 對象) 如果文件不存在,自動創建

? 2、 讀寫模式


public?static?void?main(String[]?args)?{try?{RandomAccessFile?raf=new?RandomAccessFile("data.bat",?"rw");//返回此文件中的當前偏移量。long?point=raf.getFilePointer();System.out.println(point);//?4+16*6=96+4raf.seek(100);//01111111(1+2+4+8+16+32+64)//把int的低八位寫入到文件中raf.write(1);System.out.println("現在的指針位置:"+raf.getFilePointer());raf.write("i?love?you".getBytes());/***?讀寫完畢后要關閉流,釋放資源*/raf.close();}?catch?(Exception?e)?{e.printStackTrace();}}


/***?如果讀到文件末尾,那么會報EOFException,(End?of?File),文件末尾返回-1*?@author?king-pan**/ public?class?RandomAccessFileDemo02?{/***?@param?args*/public?static?void?main(String[]?args)?{try?{RandomAccessFile?raf=new?RandomAccessFile("data.bat",?"rw");raf.seek(100);int?i=raf.read();System.out.println(i);raf.close();}?catch?(Exception?e)?{e.printStackTrace();}} }

?


文件的copy--原理:

/***?使用RandomAccessFile實現文件復制*?步驟:*?1.?創建一個RandomAccessFile用于讀取原文件*?2.?創建一個RandomAccessFile用于寫到目標文件*?3.?循環一下操作:*? 3.1:從原文件兌取一個字節*??3.2:將該字節寫入到目標文件中*??退出條件:?當讀取的值為-1時,到達文件末尾,結束*??*?4.?關閉流,釋放資源*?@author?king-pan**/ public?class?CopyDemo?{public?static?void?main(String[]?args)?throws?Exception{RandomAccessFile?srcFile=new?RandomAccessFile("Linux.txt",?"r");RandomAccessFile?descFile=new?RandomAccessFile("LinuxCopy.txt",?"rw");int?val=-1;while((val=srcFile.read())!=-1){descFile.write(val);}srcFile.close();descFile.close();} }

文件copy的優化:

/***?使用RandomAccessFile實現文件復制(高效率)*?步驟:*?1.?創建一個RandomAccessFile用于讀取原文件*?2.?創建一個RandomAccessFile用于寫到目標文件*?3.?循環一下操作:(在讀寫操作過程中優化)*? 3.1:從原文件兌取一個字節*??3.2:將該字節寫入到目標文件中*??退出條件:?當讀取的值為-1時,到達文件末尾,結束*??*?4.?關閉流,釋放資源*?@author?king-pan**/ public?class?CopyDemo02?{public?static?void?main(String[]?args)?throws?Exception{RandomAccessFile?srcFile=new?RandomAccessFile("Linux.txt",?"r");RandomAccessFile?descFile=new?RandomAccessFile("LinuxCopy.txt",?"rw");byte?[]?buf=new?byte[1024*10];//數組10kb的容量/**?int?read(byte[]?b)*?一次性讀取byte[]長度個字節,并將這些字節存入該數組。*?返回值為實際讀取道德字節量*?若返回值為-1,說明這一次沒有讀到任何字節,也就是文件讀到末尾了*/int?length=-1;//測試效率?開始時間long?start=System.currentTimeMillis();while((length=srcFile.read(buf))!=-1){/**?將給定數組中的所有內容寫入到文件中*?最后一次寫入可能length小于數組的長度*/descFile.write(buf,0,length);}//復制完后的時間long?end=System.currentTimeMillis();System.out.println("耗時:"+(end-start));srcFile.close();descFile.close();} }

RandomAccessFile對基本類型的讀寫操作:

public?static?void?write(){try?{RandomAccessFile?raf=new?RandomAccessFile("test.bat","rw");int?max=Integer.MAX_VALUE;/***?右移運算 *?raf.write(max>>>24);*?raf.write(max>>>16);*?raf.write(max>>>8);*?raf.write(max);?*/raf.writeByte(Byte.MAX_VALUE);raf.writeBoolean(Boolean.TRUE);raf.writeChar(Character.MAX_CODE_POINT);raf.writeShort(Short.MAX_VALUE);//完整的寫入了一個intraf.writeInt(max);raf.writeLong(Long.MAX_VALUE);raf.writeFloat(Float.MAX_VALUE);raf.writeDouble(Double.MAX_VALUE);raf.close();}?catch?(Exception?e)?{e.printStackTrace();}}public?static?void?read(){try?{RandomAccessFile?raf=new?RandomAccessFile("test.bat","rw");byte?b=raf.readByte();boolean?bl=raf.readBoolean();char?c=raf.readChar();short?s=raf.readShort();int?i=raf.readInt();long?l=raf.readLong();float?f=raf.readFloat();double?d=raf.readDouble();System.out.println("byte:"+b);System.out.println("boolean:"+bl);System.out.println("char:"+c);System.out.println("short:"+s);System.out.println("int:"+i);System.out.println("long:"+l);System.out.println("float:"+f);System.out.println("double:"+d);raf.close();}?catch?(Exception?e)?{e.printStackTrace();}}


轉載于:https://my.oschina.net/KingPan/blog/322917

總結

以上是生活随笔為你收集整理的java-io之RandomAccessFile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。