Thinking Different




파일 입출력

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!("파일 삭제 완료");
}

 

'프로그래밍 언어 > Rust' 카테고리의 다른 글

[Rust] 25. 스레드 동기화  (0) 2023.03.24
[Rust] 24. 스레드  (0) 2023.03.14
[Rust] 22. 커멘드라인 아규먼트  (0) 2023.03.09
[Rust] 21. 테스트 코드  (0) 2023.03.06
[Rust] 20. 트레잇 & 트레잇 바운드  (0) 2023.03.05