18.4.1 open

정적 메소드 open는 파일을 읽기-전용 모드로 열람할 수 있다.

File은 리소스 파일 설명자를 소유하고 파일이 삭제 됐을 때 파일을 닫는 처리를 한다.

// open.rs
use std::error::Error;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    // 원하는 파일에 대해 Path를 만든다.
    let path = Path::new("hello.txt");
    let display = path.display();

    // path를 읽기-전용 모드로 열어, `io::Result<File>`를 반환한다.
    let mut file = match File::open(&path) {
        // `io::Error`의 `description` 메소드는 에러의 설명을 string으로 반환한다.
        Err(why) => panic!("couldn't open {}: {}", display,
                                                   why.description()),
        Ok(file) => file,
    };

    // 파일 내용을 string으로 읽어, `io::Result<usize>`를 반환한다.
    let mut s = String::new();
    match file.read_to_string(&mut s) {
        Err(why) => panic!("couldn't read {}: {}", display,
                                                   why.description()),
        Ok(_) => print!("{} contains:\n{}", display, s),
    }

    // `file`이 범위에서 벗어나면, "hello.txt" 파일은 닫히게 된다.
}

성공적으로 수행되면 이와 같이 출력된다:

$ echo "Hello World!" > hello.txt
$ rustc open.rs && ./open
hello.txt contains:
Hello World!

(당신에게 권고하는 사항은 상기 예제에서 다양한 실패 상황에서 테스트하라는 것: hello.txt가 존재하지 않거나, hello.txt가 읽을 수 없거나, 기타 등등)

results matching ""

    No results matching ""