1. 程式人生 > 其它 >IO流之隨機存取檔案流

IO流之隨機存取檔案流

IO流之隨機存取檔案流

RandomAccessFile的使用

  1. RandomAccessFile直接繼承於java.lang.Object類,實現了DataInput和DataOutPut介面
  2. RandomAccessFile既可以作為一個輸入流,又可以作為一個輸出流。
  3. 如果RandomAccessFile作為輸出流時,寫出到的檔案如果不存在,則在執行過程中自動建立;如果寫出的檔案存在,則會對原有檔案內容進行覆蓋。(預設情況下,從頭覆蓋)
  4. 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();
        }
    }
}