18.4.2 create
create
정적 메소드는 파일을 쓰기-전용 모드로 열람한다. 만약 파일이 이미 존재한다면, 이전의 내용들은 삭제된다. 그 이후, 새 파일이 생성된다.
// create.rs
static LOREM_IPSUM: &'static str =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
";
use std::error::Error;
use std::io::prelude::*;
use std::fs::File;
use std::path::Path;
fn main() {
let path = Path::new("out/lorem_ipsum.txt");
let display = path.display();
//파일을 쓰기-전용 모드로 열고, `io::Result<File>` 반환한다.
let mut file = match File::create(&path) {
Err(why) => panic!("couldn't create {}: {}",
display,
why.description()),
Ok(file) => file,
};
// `LOREM_IPSUM` string을 `file`에 쓰며, `io::Result<()>`를 반환한다.
match file.write_all(LOREM_IPSUM.as_bytes()) {
Err(why) => {
panic!("couldn't write to {}: {}", display,
why.description())
},
Ok(_) => println!("successfully wrote to {}", display),
}
}
성공적으로 수행됐다면 다음과 같은 출력을 볼 수 있다:
$ mkdir out
$ rustc create.rs && ./create
successfully wrote to out/lorem_ipsum.txt
$ cat out/lorem_ipsum.txt
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
(상기 예제에서, 당신에게 권고하는 사항은 이 예제의 실패 상황을 테스트 하라는 점이다.)
보다 범용적인 open_mode
메소드를 통해 파일을 다른 모드로 열 수 있다: 읽기+쓰기, 추가하기, 기타.