[Rust] 파일 입출력
파일 입출력 모듈은 std::fs다.
일단 텍스트를 하나 써보자
use std::fs;
fn main()
{
fs::write("text.txt", "안녕하시오")
.expect("쓰기 실패");
println!("쓰기 성공");
}

잘 된다.
그럼 이걸 다시 수정해서 읽어보자
read는 읽은걸 Result로 덮어서 반환한다.
use std::fs;
fn main()
{
let input = fs::read("text.txt").expect("읽기 실패");
let input = String::from_utf8(input).expect("변환 실패");
println!("읽기 성공: {}", input);
}

파일 삭제함수도 있다. 방금 만들었던 텍스트 파일을 지워본다.
use std::fs;
fn main()
{
fs::remove_file("text.txt").expect("삭제 실패");
println!("삭제 성공");
}

그리고 특정 디렉터리의 목록을 불러오는 놈도 있다.
use std::fs;
fn main()
{
let dir = fs::read_dir("C:/Program Files").expect("읽기 실패");
for entry in dir {
let filename = entry.unwrap().file_name();
println!("{}", filename.to_str().unwrap());
};
}

파일 정보를 확인하는 기능도 있다.
use std::fs;
fn main()
{
let data
= fs::metadata("C:/Program Files/Java/jdk-10.0.1/bin/java.exe")
.expect("확인 실패");
if data.is_dir() { println!("이것은 디렉터리요"); }
else { println!("이것은 디렉터리가 아니요."); }
if data.is_file() { println!("이것은 파일이요"); }
else { println!("이것은 파일이 아니요"); }
println!("파일의 크기는 {}바이트요", data.len());
}
이외에도 rename, copy 등 편리한 기능들이 많다. 잘 찾아보길 바란다.
https://doc.rust-lang.org/std/fs/index.html