IO流之隨機存取檔案流
阿新 • • 發佈:2021-07-16
IO流之隨機存取檔案流
RandomAccessFile的使用
- RandomAccessFile直接繼承於java.lang.Object類,實現了DataInput和DataOutPut介面
- RandomAccessFile既可以作為一個輸入流,又可以作為一個輸出流。
- 如果RandomAccessFile作為輸出流時,寫出到的檔案如果不存在,則在執行過程中自動建立;如果寫出的檔案存在,則會對原有檔案內容進行覆蓋。(預設情況下,從頭覆蓋)
- void seek(long pos):將檔案記錄指標定位到 pos 位置
舉例
package com.yicurtain.IO; import org.junit.Test; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileTest { @Test public void test1(){ // 1. RandomAccessFile raf1 = null; RandomAccessFile raf2 = null; try { raf1 = new RandomAccessFile(new File("beauty.jpg"),"r"); raf2 = new RandomAccessFile(new File("beauty2.jpg"),"rw"); // 2. byte[] cbuf = new byte[20]; int len; while ((len=raf1.read(cbuf))!=-1){ raf2.write(cbuf); } } catch (IOException e) { e.printStackTrace(); } finally { // 3. try { if (raf1!=null) raf1.close(); } catch (IOException e) { e.printStackTrace(); } try { if (raf2!=null) raf2.close(); } catch (IOException e) { e.printStackTrace(); } } } }
匯入jar包複製使用方法
開發中,一般不自己寫IO流的原始碼,匯入jar包,使用方法。(尚矽谷 p619)
package com.yicurtain.IO; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; public class jarTest { public static void main(String[] args) { try { File srcFile = new File("D:\\JAVA\\java file\\基礎語法\\HelloWorld\\IOStream\\beauty.jpg"); File desFile = new File("D:\\JAVA\\java file\\基礎語法\\HelloWorld\\IOStream\\beauty3.jpg"); FileUtils.copyFile(srcFile,desFile); } catch (IOException e) { e.printStackTrace(); } } }