250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[JAVA] 파일포인터(FilePointer) 본문

[Snow-ball]프로그래밍(컴퓨터)/java

[JAVA] 파일포인터(FilePointer)

Snow-ball 2021. 3. 5. 18:08
반응형

 

1. 파일의 포인터 위치 이동을 확인하기 위한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package FourthClass_k;
 
import java.io.IOException;
import java.io.RandomAccessFile;
 
public class RandomAccessFileEx1 {
    public static void main(String[] args) {
        try {
            // rw : read/write 읽고 쓰기 가능.
            RandomAccessFile raf = new RandomAccessFile("test.dat""rw");
            System.out.println("파일 포인터의 위치: " + raf.getFilePointer());
            raf.writeInt(100);
            // raf.writeInt(100); 가 int 이므로 4바이트 이므로 4증가.
            System.out.println("파일 포인터의 위치: " + raf.getFilePointer());
            raf.writeLong(100L);
            // raf.writeInt(100); 가 long 이므로 8바이트 이므로 8증가.
            System.out.println("파일 포인터의 위치: " + raf.getFilePointer());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
cs

 

 

2. score2.dat으로 저장하기 위한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package FourthClass_k;
 
import java.io.EOFException;
import java.io.IOException;
import java.io.RandomAccessFile;
 
public class RandomAccessFileEx2 {
    public static void main(String[] args) {
        //            번호, 국어, 영어, 수학
        int[] score = { 1100,  90,  90,
                        2,  70,  90100,
                        3100100100,
                        4,  70,  60,  80,
                        5,  70,  90100
                        };
        try {
            RandomAccessFile raf = new RandomAccessFile("score2.dat""rw");
 
            for (int i = 0; i < score.length; i++) {
                raf.writeInt(score[i]);
            }
 
            while (true) {
                System.out.println(raf.readInt());
            }
        } catch (EOFException eof) {
            // readInt()를 호출했을 때 더 이상 읽을 내용이 없으면 EOFException이 발생한다.
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
cs

 

 

3. 2번의 결과를 보기 위한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package FourthClass_k;
 
import java.io.EOFException;
import java.io.IOException;
import java.io.RandomAccessFile;
 
public class RandomAccessFileEx3 {
    public static void main(String[] args) {
        int sum = 0;
 
        try {
            // r 모드 = read 읽기 가능모드
            RandomAccessFile raf = new RandomAccessFile("score2.dat""r");
            int i = 4;
 
            while (true) {
                // seek 는 그자리로 옮기는것.
                raf.seek(i);
                sum += raf.readInt();
                // i 는
                i += 16;
            }
        } catch (EOFException e) {
            System.out.println("sum : " + sum);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
cs

 

 

반응형
Comments