파일 이름 처리
파일 이름 처리
파일 이름을 처리하는 술어들을 설명해요.
본문
absolute_file_name/2
Templates
absolute_file_name(+atom, atom)
Description
absolute_file_name(File1, File2)는 File2가 상대 파일 이름 File1과 연관된 절대 경로명이면 성공해요. File1은 $VAR_NAME 부분 문자열을 포함할 수 있어요. 그런 부분 문자열이 만나지면 이름이 VAR_NAME인 환경 변수가 있으면 그 값으로 확장돼요(없으면 확장 안 함). File1은 ~USER_NAME/ 부분 문자열로 시작할 수도 있는데, 이는 사용자 USER_NAME의 홈 디렉토리로 확장돼요. USER_NAME이 존재하지 않으면 File1은 무효한 경로명이에요. USER_NAME이 주어지지 않으면(즉 File1이 ~/로 시작하면) ~ 문자는 HOME 환경 변수의 값으로 확장돼요. HOME 변수가 정의되지 않으면 File1은 무효한 경로명이에요. 현재 디렉토리에 대한 상대 참조(/./ 부분 문자열)와 부모 디렉토리에 대한 참조(/../ 부분 문자열)는 제거되어 더 이상 File2에 나타나지 않아요. File1은 너무 많은 연속된 /../ 부분 문자열(즉 부모 디렉토리 상대 참조)을 포함해도 무효예요. 마지막으로 File1이 user이면 File2도 user와 통일되어 이 술어를 Prolog 파일 이름에 호출할 수 있게 해줘요(DEC-10 입출력 술어에서 user는 현재 입력/출력 스트림을 나타냄).
Windows에서는 다음이 적용돼요:
$VAR_NAME에 대한 대체 인식 형태는%VAR_NAME%이에요.~가 확장될 때 HOME 변수가 정의되지 않으면~는 HOMEDIR과 HOMEPATH를 사용해 확장돼요(HOMEPATH가 정의되지 않으면 File1은 무효한 경로명).
파일 이름을 사용하는 대부분의 술어는 원하는 파일을 얻기 위해 이 술어를 암시적으로 호출해요. 예: open/4.
Errors
- File1이 변수 —
instantiation_error - File1이 변수도 원자도 아님 —
type_error(atom, File1) - File2가 변수도 원자도 아님 —
type_error(atom, File2) - File1이 원자이지만 유효한 경로명이 아님 —
domain_error(os_path, File1)
Portability: GNU Prolog 술어.
is_absolute_file_name/1, is_relative_file_name/1
Templates
is_absolute_file_name(+atom)
is_relative_file_name(+atom)
Description
is_absolute_file_name(PathName)은 PathName이 절대 파일 이름이면 성공해요. 반대로 is_relative_file_name(PathName)은 PathName이 절대 파일 이름이 아니면 성공해요. PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요. 현재 구현은 PathName의 유효성을 확인하지 않아요. PathName이 /(슬래시)로 시작하면 절대로 간주돼요. Windows에서 PathName은 \(백슬래시) 또는 드라이브 지정으로 시작할 수도 있어요.
Errors
- PathName이 변수 —
instantiation_error - PathName이 변수도 원자도 아님 —
type_error(atom, PathName)
Portability: GNU Prolog 술어.
decompose_file_name/4
Templates
decompose_file_name(+atom, ?atom, ?atom, ?atom)
Description
decompose_file_name(File, Directory, Prefix, Suffix)는 경로명 File을 분해하고 Directory 부분(마지막 / 앞의 문자들), Prefix 부분(마지막 / 뒤와 마지막 . 앞의 문자들, 접미사가 없으면 끝까지), Suffix 부분(마지막 .부터 문자열 끝까지의 문자들)을 추출해요.
Errors
- File이 변수 —
instantiation_error - File이 변수도 원자도 아님 —
type_error(atom, File) - Directory가 변수도 원자도 아님 —
type_error(atom, Directory) - Prefix가 변수도 원자도 아님 —
type_error(atom, Prefix) - Suffix가 변수도 원자도 아님 —
type_error(atom, Suffix)
Portability: GNU Prolog 술어.
prolog_file_name/2
Templates
prolog_file_name(+atom, ?atom)
Description
prolog_file_name(File1, File2)는 File1과 연관된 Prolog 파일 이름과 File2를 통일해요. 더 정확히 File2는 다음과 같이 계산돼요:
- File1에 접미사가 있거나
user이면 File2는 File1과 통일. - 그 외에 이름이 File1 +
.pl인 파일이 존재하면 File2는 그 이름과 통일. - 그 외에 이름이 File1 +
.pro인 파일이 존재하면 File2는 그 이름과 통일. - 그 외에 이름이 File1 +
.prolog인 파일이 존재하면 File2는 그 이름과 통일. - 그 외에 File2는 File1 +
.pl이름과 통일.
이 술어는 파일의 존재를 확인하기 위해 absolute_file_name/2를 사용해요(8.26.1절).
Errors
- File1이 변수 —
instantiation_error - File1이 변수도 원자도 아님 —
type_error(atom, File1) - File2가 변수도 원자도 아님 —
type_error(atom, File2) - File1이 원자이지만 유효한 경로명이 아님 —
domain_error(os_path, File1)
Portability: GNU Prolog 술어.