Rust 에서 파일 읽기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 원하는 파일의 경로를 제공하여 읽기 전용 모드로 파일을 여는 방법으로 open 함수를 소개합니다. 이 함수는 파일 디스크립터를 소유하는 File 객체를 반환하고 더 이상 필요하지 않을 때 파일을 자동으로 닫습니다.

open 함수를 사용하려면 std::fs::File, std::io::prelude::*, std::path::Path와 같은 필요한 모듈을 가져와야 합니다. 그런 다음 File::open 메서드를 경로를 인수로 사용하여 호출합니다. 파일이 성공적으로 열리면 함수는 Result<File, io::Error> 객체를 반환하고, 그렇지 않으면 오류 메시지로 프로그램이 중단됩니다.

파일이 열리면 read_to_string 메서드를 사용하여 파일 내용을 읽을 수 있습니다. 이 메서드는 파일 내용을 문자열로 읽어 Result<usize, io::Error>를 반환합니다. 읽기 작업이 성공하면 문자열에 파일 내용이 포함됩니다. 그렇지 않으면 오류 메시지로 프로그램이 중단됩니다.

제공된 예제에서는 hello.txt 파일의 내용을 읽어 콘솔에 출력합니다. drop 트레이트는 file 객체가 범위를 벗어날 때 파일이 닫히도록 보장합니다.

참고: 실습에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어 main.rs 파일을 사용하고 rustc main.rs && ./main 명령으로 컴파일 및 실행할 수 있습니다.

open

open 함수는 읽기 전용 모드로 파일을 열기 위해 사용할 수 있습니다.

File 객체는 파일 디스크립터와 같은 리소스를 소유하고, drop될 때 파일을 자동으로 닫습니다.

use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    // 원하는 파일의 경로를 만듭니다.
    let path = Path::new("hello.txt");
    let display = path.display();

    // 읽기 전용 모드로 경로를 엽니다. `io::Result<File>` 를 반환합니다.
    let mut file = match File::open(&path) {
        Err(why) => panic!("{} 열기 실패: {}", display, why),
        Ok(file) => file,
    };

    // 파일 내용을 문자열로 읽습니다. `io::Result<usize>` 를 반환합니다.
    let mut s = String::new();
    match file.read_to_string(&mut s) {
        Err(why) => panic!("{} 읽기 실패: {}", display, why),
        Ok(_) => print!("{}에는 다음과 같은 내용이 있습니다:\n{}", display, s),
    }

    // `file` 객체가 범위를 벗어나면서 "hello.txt" 파일이 닫힙니다.
}

예상 성공적인 출력은 다음과 같습니다.

$ echo "Hello World!" > hello.txt
$ rustc open.rs && ./open
hello.txt에는 다음과 같은 내용이 있습니다:
Hello World!

(다양한 실패 조건 (예: hello.txt 파일이 존재하지 않거나 읽을 수 없는 경우 등) 에서 위의 예제를 테스트해 보는 것을 권장합니다.)

요약

축하합니다! Open 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.