UTL_FILE

UTL_FILE 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명합니다.

개요

UTL_FILE은 운영체제에서 관리하는 파일에 접근하기 위한 함수와 프러시저를 제공하는 패키지입니다. 파 일의 경로는 디렉터리명으로 지정할 수 있습니다.

UTL_FILE 패키지에서 정의된 타입과 예외 상황은 다음과 같습니다.

타입

FILE_TYPE의 타입은 파일 식별자로 사용됩니다.

TYPE FILE_TYPE IS RECORD
(
        id        BINARY_INTEGER,
        datatype  BINARY_INTEGER
);

예외 상황

예외 상황
설명

INVALID_PATH

파일의 경로가 유효하지 않은 경우

INVALID_MODE

유효하지 않은 모드를 사용한 경우

INVALID_FILEHANDLE

유효하지 않은 파일 핸들에 파일 연산을 하는 경우

INVALID_OPERATION

파일에 대한 연산을 수행할 수 없는 경우

READ_ERROR

읽기 연산 중에 에러가 발생하는 경우

WRITE_ERROR

쓰기 연산 중에 에러가 발생하는 경우

INTERNAL_ERROR

예기치 못한 에러가 발생하는 경우

FILE_OPEN

파일이 열려 있어서 해당 연산을 수행할 수 없는 경우

INVALID_MAXLINESIZE

  • FOPEN 함수를 사용할 때 max_linesize 값이 유효하지 않은 경우

  • max_linesize 값은 1과 32767bytes 사이의 값이어야 함

INVALID_FILENAME

파일 이름이 유효하지 않은 경우

ACCESS_DENIED

해당 파일에 대한 접근 권한이 없는 경우

INVALID_OFFSET

다음과 같이 유효하지 않은 오프셋이 주어진 경우

  • 상대 오프셋과 절대 오프셋이 모두 NULL일 때 유효하지 않음

  • 절대 오프셋이 음수일 때 유효하지 않음

  • 오프셋이 파일 끝의 위치를 초과했을 때 유효하지 않음

DELETE_FAILED

DELETE 연산이 실패한 경우

RENAME_FAILED

RENAME 연산이 실패한 경우

프러시저

본 절에서는 UTL_FILE 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.

아래 예시들은 DIRECTORY 오브젝트 USER_PATH가 이미 존재한다고 가정합니다.

실제 사용자 환경의 경로에 맞게 DIRECTORY 오브젝트를 생성해야 합니다.

경로가 잘못되더라도 DIRECTORY 오브젝트는 생성될 수 있으나, 해당 경로 접근 시 ERROR_PKG_UTL_FILE_INVALID_DIR 오류가 발생합니다.

FCLOSE

파일을 닫는 프러시저입니다.

FCLOSE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들

  • 예외 상황

– WRITE_ERROR

– INVALID_FILEHANDLE

  • 예제

FCLOSE_ALL

현재 세션에 열린 모든 파일을 닫는 프러시저입니다.

FCLOSE_ALL 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 예외 상황

– WRITE_ERROR

  • 예제

FCOPY

파일의 연속되는 부분을 새로 생성된 파일에 복사하는 프러시저입니다.

FCOPY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

location

복사를 진행할 대상 파일이 위치할 경로의 디렉터리명

filename

복사를 진행할 대상 파일의 이름

dest_dir

복사가 진행된 이후 파일이 위치할 경로의 디렉터리명

dest_file

복사가 진행된 이후의 파일의 이름

start_line

  • 복사를 진행할 시작 위치

  • 파일의 라인 번호를 사용해 명시(기본값: 1, 파일의 첫 번째 의미)

end_line

  • 복사를 끝낼 종료 위치

  • start_line과 마찬가지로 라인 번호로 명시 (기본값: NULL, 파일의 마지막 라인을 의미)

  • 예제

FFLUSH

아직 파일에 쓰지 않고 버퍼에 남아 있는 데이터를 파일에 쓰는 프러시저입니다. 데이터는 반드시 EOL 문자 로 끝나야 합니다.

FFLUSH 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

  • 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

  • 예제

FGETATTR

디스크 파일의 속성을 반환하는 프러시저입니다.

FGETATTR 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

location

파일의 경로를 나타내는 디렉터리명

filename

파일의 이름

fexists

파일의 존재 여부

file_length

파일의 길이(Byte)

blocksize

파일 시스템의 블록 크기(Byte)

  • 예제

FREMOVE

파일을 삭제하는 프러시저입니다. 파일을 삭제하는 데 충분한 권한이 없는 경우 DELETE_FAILED 예외 상황이 발생합니다.

FREMOVE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

location

파일의 위치를 나타내는 디렉터리명

filename

파일의 이름

  • 예외 상황

– DELETE_FAILED

  • 예제

FRENAME

파일의 이름을 변경하는 프러시저입니다. OS 셸에서 사용하는 mv 명령어와 동일하게 동작합니다.

FRENAME 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

location

원본 파일의 경로를 나타내는 디렉터리명

filename

원본 파일의 이름

dest_dir

변경된 파일의 경로를 나타내는 디렉터리명

dest_file

변경된 파일의 이름

overwrite

변경된 파일의 이름이 이미 존재할 경우 덮어쓸지를 지정

  • 예제

FSEEK

파일 포인터의 위치를 변경하는 프러시저입니다.

FSEEK 프러시저의 세부내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

fid

UTL_FILE 패키지의 FILE_TYPE 타입의 파일 식별자

absolute_offset

절대 오프셋, 파일의 시작부터의 오프셋 값(기본값: NULL)

relative_offset

  • 상대 오프셋, 현재 파일 포인터 위치에서 양수이면 뒤쪽, 음수이면 앞쪽 방향을 나타냄

  • 절대 오프셋이 있는 경우 상대 오프셋은 무시됨 (기본값: NULL)

  • 예외 상황

– INVALID_OFFSET

  • 예제

GET_LINE

EOL 문자 또는 파일이 끝날 때까지의 내용을 읽어 오는 프러시저입니다. FOPEN 함수에서 지정한max_linesize 이상을 읽어 올 수 없습니다.

GET_LINE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

buffer

읽어 온 데이터

len

파일로부터 읽어 올 Byte의 크기 (기본값: NULL, NULL인 경우 max_linesize 값을 가짐)

  • 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

  • 예제

GET_RAW

파일로부터 RAW 타입의 문자열을 읽어 오는 프러시저입니다. EOL 문자를 무시하며, 읽은 Byte의 크기를 반환합니다.

GET_RAW 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

buffer

읽어 온 데이터

len

파일로부터 읽어 올 Byte의 크기 (기본값: NULL, NULL인 경우 max_linesize 값을 가짐)

  • 예제

NEW_LINE

파일에 하나 이상의 EOL 문자를 넣는 프러시저입니다. EOL 문자는 플랫폼에 따라 다르다.

NEW_LINE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

lines

파일에 넣을 EOL 문자의 개수

  • 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

  • 예제

PUT

파일에 문자열을 넣을 때 사용하는 프러시저입니다.

PUT 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

buffer

  • 파일에 쓸 내용

  • 파일이 w(쓰기 텍스트)나 a(추가 텍스트) 모드로 열리지 않은 경우 IN VALID_OPERATION 예외 상황이 발생

  • 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

  • 예제

PUTF

형식화된 PUT 프러시저입니다. PUTF의 형식화된 문자열은 C언어에서 표준 입출력(standard I/O)의 fprintf 에서의 형식화된 문자열과 동일하게 %s와 이스케이프 문자를 포함합니다. 이스케이프 문자로 \n을 사용할 수 있으며 %s는 그 뒤에 나오는 인수 문자열을 대체합니다.

예를 들어 다음과 같은 세 개의 인수가 있다고 가정하면,

위의 세 개의 인수를 사용하는 형식화된 문자열은 다음과 같습니다.

또한 위의 내용이 실행되면 다음과 같은 내용이 출력됩니다.

PUTF 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

format

%s와 이스케이프 문자(\n)를 포함하는 형식화된 문자열

arg1-5

%s에 대체되는 선택할 수 있는 문자열(기본값: NULL)

  • 예외 상황

– INVALID_FILEHANDLE

– INVALID_OPERATION

– WRITE_ERROR

  • 예제

PUT_RAW

RAW 타입 데이터의 내용을 파일에 쓰는 프러시저입니다.

PUT_RAW 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

fid

파일 식별자

r

파일에 쓸 데이터

autoflush

쓰기를 한 후 출력 버퍼를 비울지 여부를 결정

  • TRUE : 버퍼를 비움

  • FALSE : 기본값으로 버퍼를 비우지 않음

  • 예제

PUT_LINE

라인을 파일에 쓰는 프러시저입니다. 이때 라인은 플랫폼에 종속적인 EOL 문자로 끝냅니다.

PUT_LINE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

buffer

파일에 쓸 라인

autoflush

쓰기를 한 후 출력 버퍼를 비울지 여부를 결정

  • TRUE : 버퍼를 비움

  • FALSE : 기본값으로 버퍼를 비우지 않음

  • 예제

함수

본 절에서는 UTL_FILE 패키지에서 제공하는 함수를 알파벳 순으로 설명합니다.

FGETPOS

파일 내에서 파일 포인터의 상대적인 위치(Byte)를 반환하는 함수입니다.

FGETPOS 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

fid

파일 핸들러

  • 예제

FOPEN

파일을 여는 함수입니다. 최대 50개의 파일을 동시에 열 수 있습니다.

FOPEN 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

location

파일의 경로를 나타내는 디렉터리명

filename

파일의 이름

open_mode

파일 모드입니다. 파일 모드의 종류는 다음과 같음

  • r : 읽기 텍스트 모드

  • w : 쓰기 텍스트 모드

  • a : 추가 텍스트 모드

  • rb : 읽기 바이트 모드

  • wb : 쓰기 바이트 모드

  • ab : 추가 바이트 모드로, 추가 모드에서 파일이 존재하지 않으면 쓰기 모드로 파일을 생성

max_linesize

  • 각 라인에 포함되는 byte 수의 최댓값으로 newline 문자를 포함

  • 최소 1byte에서 최대 32767bytes (기본값: 1024bytes)

  • 예외 상황

– INVALID_PATH

– INVALID_MODE

– INVALID_OPERATION

– INVALID_MAXLINESIZE

  • 예제

IS_OPEN

파일 핸들러를 통해 파일이 열려 있는지 검사하는 함수입니다. 파일이 열려있는 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환합니다.

IS_OPEN 함수의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

file

파일 핸들러

  • 예제

Last updated