Java 파일 -- -RandomAccessFile 예

7359 단어
Java 파일 -- -RandomAccessFile 예
RandomAccessFile은 데이터 기록을 저장하는 파일에 접근하는 데 사용되며,seek () 방법으로 기록에 접근하여 읽기와 쓰기를 할 수 있습니다.이 기록들의 크기는 같을 필요가 없다.그러나 그 크기와 위치는 반드시 알 수 있어야 한다.그러나 이 클래스는 조작 파일에만 한정됩니다
MulitWriteFile 클래스: 프로그램 포털 - 데이터 쓰기, 데이터 읽기
public class MulitWriteFile {
    
    static File file = new File("RandomAccessFile.txt");

    public static void main(String[] args) {
        
        /*               */
        if (file.exists()) {
            file.delete();
        }
        new WriteFile(file, 5).start();
        new WriteFile(file, 3).start();
        new WriteFile(file, 1).start();
        new WriteFile(file, 4).start();
        new WriteFile(file, 2).start();
        
        /*             */
        RandomAccessFile raf = null;
        try {
            raf = new RandomAccessFile(file, "r");
            raf.seek(300);
            byte[] str = new byte[20];
            raf.read(str);
            String in = new String(str);
            System.out.println(in);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (raf != null) {
                    raf.close();
                }
            } catch (Exception e) {
            }
        }
    }
}

 
WriteFile 클래스(스레드): RandomAccessFile 사용법 - 파일에 지정된 위치에 데이터를 씁니다.
public class WriteFile extends Thread {

    /**        */
    File file;
    /**       (  ) */
    int block;
    /**         */
    int L = 100;
    
    /**
     * File
     *            |***        |+++
     * |-----------***---------+++--------------------------|
     *         |---
     */
    
    /**
     * 1            2            3            4            5(2)
     * |------------|------------|------------|------------|------------|
     * 0xL            1xL
     * 
     * @param f
     * @param b
     */

    public WriteFile(File f,int b){
        file = f;
        block = b;
    }
    
    @Override
    public void run() {
        RandomAccessFile raf = null;
        try {
            //          
            raf = new RandomAccessFile(file, "rw");
            //           
            raf.seek((block-1)*L);
            //            
            raf.writeBytes("This is block"+block);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (raf != null) {
                try {
                    raf.close();
                } catch (Exception e) {
                }
            }
        }
    }
}

posted @
2017-10-30 21:50
...) 설명(
...) 모음 편집

좋은 웹페이지 즐겨찾기