반응형
※ 길이 지시자(Length Indicator)를 이용한 레코드 구조 예시
필드 구분 방법 : 구분자 방식(Separate Fields with Delimiters)
레코드 구분 방법 : 길이 지시자 방식(Records with a Length Indicator)
※ WritePerson()의 과정
1. 각 레코드를 기록하기 전에 해당 레코드의 필드 길이의 합을 알아야만 함
2. 버퍼에 레코드의 전체 내용을 저장 (필드 사이에 구분자를 추가)
3. 버퍼의 길이를 통해 레코드의 길이를 구함
4. 파일에 레코드의 길이를 write
5. 파일에 버퍼 내용을 write
※ 레코드 길이 표현 방법
- 2byte binary form
- 문자형태로 변환할 필요 없음
- ASCII 형태로 저장할 때보다 메모리를 절약할 수 있음
- 파일을 읽을 때 레코드 길이 그 자체로 보이지 않아 해석하는 작업이 필요함
- ex) 레코드 길이 40 -> 00 28 (16진수 값) -> '\0' '(' (파일에 저장된 문자) - ASCII form
- 정수를 각 숫자마다 문자로 저장하는 방식
- 따라서 파일을 읽을 때 문자 그대로가 레코드의 길이임
- 정수의 자릿수마다 메모리가 필요하므로 메모리 낭비가 심함
- ex) 레코드 길이 40 -> 34 30 (16진수 값) -> '4' '0' (파일에 저장된 문자)
파일 덤프를 확인해본 결과 binary form으로 저장된 것을 알 수 있다.
※ ReadPerson()의 과정
1. read 할 데이터의 offset 위치로 lseek()을 통해 이동
2. 레코드의 길이를 읽음
3. 레코드 길이 + 널문자가 들어갈 크기만큼의 버퍼 생성
4. 버퍼에 레코드 길이 만큼 read
5. 각 필드를 추출하여 저장
반응형
'파일처리' 카테고리의 다른 글
[파일처리] Organizing Files for Performance (0) | 2022.04.25 |
---|---|
[파일처리] 레코드 파일 관리 (Managing Files of Records) (0) | 2022.04.25 |
[파일처리] 파일 구조 - Field Structure / Record Structure (0) | 2022.04.24 |
[파일처리] SSD - 플래시 메모리(Flash memory) (0) | 2022.04.13 |
[파일처리] 하드디스크의 구조 - 디스크 액세스 비용 (0) | 2022.04.13 |