Topazdocs
표준 라이브러리와 런타임

파일과 리소스

파일 열기·읽기·쓰기·닫기와 `using` 자원 수명 규칙.

파일 API는 운영체제 핸들을 노출하는 대신, 파일을 열고 사용하고 닫는 수명을 하나의 제한된 계약으로 제공합니다.

정식 계약

File.open, File.create, File.append는 성공하면 File, 실패하면 문자열 오류를 담은 Result를 반환합니다. 열린 파일은 readText, readLine, write, writeLine, flush, close를 제공합니다. using file = ... { ... }을 사용하면 블록이 어떤 경로로 끝나더라도 파일을 닫습니다.

공개 표면

경로는 문자열 또는 p"..." 템플릿으로 전달합니다. 파일 조작은 호스트 프로필이 허용한 루트 안에서만 수행됩니다. readLine은 더 이상 읽을 줄이 없으면 None을 반환합니다.

관찰 가능한 동작

텍스트 읽기와 쓰기는 명시된 인코딩 규칙을 따릅니다. 쓰기 순서는 호출 순서와 같고 flush는 그 시점까지의 버퍼를 호스트에 전달합니다. 열기·읽기·쓰기의 예상 가능한 실패는 Result로 돌려주고, 잘못된 상태 사용은 실행 오류가 될 수 있습니다.

현재 지원

현재 도구 모음는 기본 파일 API와 using 정리 경로를 해석기·Rust·Python에서 다룹니다. 웹 타겟은 브라우저의 파일 권한과 가상 호스트 제한을 따르므로 네이티브 파일 시스템과 같다고 볼 수 없습니다.

제약과 제외

임의의 호스트 경로 탐색, 자동 문자 인코딩 추측, 파일 핸들 복제, 호스트 예외의 자동 Result 변환, 닫힌 후 작업의 호환 가능한 동작은 보장하지 않습니다.

예제

TOPAZ
function append(path: string, text: string) -> Result<(), string> {
    let file = open(path)?
    defer { file.close() }
    file.write(text)?
    return Ok(())
}

관련 정책