프로그래밍 언어/Rust

[Rust] 23. 파일 입출력

copynull 2023. 3. 10. 21:17

파일 입출력

Rust 에서는 파일 입출력을 위해 File 구조체를 사용하며, 구조체의 모든 메소드는 io:Result 열거형으로 반환된다.

 

파일 쓰기

std::io::Write 의 write_all() 함수를 사용하여 파일을 쓸수 있다. 아래 예제를 보자

use std::fs::File;
use std::io::Write;

fn main()
{
    let mut _file  = File::create("test.txt").expect("파일 생성 실패!");

    _file.write_all("Hello Rust World!".as_bytes()).expect("쓰기 실패");
    _file.write_all("\n반갑습니다 러스트!!".as_bytes()).expect("쓰기 실패");

    println!("파일 쓰기 완료!");
}

아래와 같이 파일이 정상적으로 생성되고 데이터가 작성되어 저장된 것을 볼 수 있다.

 

 

파일 읽기

위에서 만들어진 텍스트 파일을 읽어보도록 하자

use std::fs::File;
use std::io::Read;

fn main()
{
    let mut _file  = File::open("a.txt").expect("파일 열기 실패!");

    let mut data_buf = String::new();
    
    _file.read_to_string(&mut data_buf).expect("파일 읽기 실패!");

    println!("{}", data_buf);
}

 

 

기존 파일에 데이터 추가

OpenOptions 의 append 모드로 파일을 열게 되면 기존에 생성된 파일에 데이터를 추가할 수 있다.

use std::fs::OpenOptions;
use std::io::Write;

fn main()
{
    let mut _file  = OpenOptions::new().append(true).open("test.txt").expect("파일 열기 실패!");

    _file.write_all("\n\n파일에 데이터를 추가합니다.".as_bytes()).expect("파일 쓰기 실패");
    _file.write_all("\nHave a good day~".as_bytes()).expect("파일 쓰기 실패");

    println!("추가 쓰기 완료");
}

 

파일 삭제

remove_file 메서드를 사용하여 파일을 삭제 할 수 있다.

use std::fs;

fn main()
{
    fs::remove_file("test.txt").expect("파일 삭제 실패");

    println!("파일 삭제 완료");
}