Rust - File Input/ Output

Mickey·2022년 1월 15일
0

Rust

목록 보기
25/32
post-thumbnail
post-custom-banner

https://www.tutorialspoint.com/rust/rust_file_input_output.htm

콘솔에서 읽고 쓰는 것 외에도 Rust는 파일을 읽고 쓸 수 있음
File 구조체는 파일에 대해 읽기-쓰기 기능 제공
File 구조체의 모든 메서드는 io::Result 열거형의 변형을 반환

Sr.No.ModuleMethodSignatureDescription
1std::fs::Fileopen()pub fn open<P:AsRef>(path:P)->Resultopen static 메소드는 읽기 전용 모드로 파일을 여는 데 사용
2std::fs::Filecreate()pub fn create<P:AsRef>(path:P)->Resultcreate 정적 메서드는 쓰기 전용 모드에서 파일을 여는데 사용, 이미 파일이 존재하면 이전 내용은 삭제, 파일이 없으면 생성
3std::fs::remove_fileremove_file()pub fn remove_file<P:AsRef>(path:P)->Result<()>파일 시스템에서 파일 제거, 파일이 즉시 삭제된다는 보장은 없음
4std::fs::OpenOptionsappend()pub fn append(&mut self, append: bool)->&mut OpenOptions파일의 추가 모드에 대한 옵션을 설정
5std::io::Writewrite_all()fn write_all(&mut self, buf: &[u8])->Result<()>전체 버퍼를 쓰기 시도
6std::io::Readread_to_string()fn read_to_string(&mut self, buf:&mut String)->Result소스의 EOF까지의 내용을 버퍼에 추가

파일 쓰기

use std::io::Write;
fn main() {
  let mut file = std::fs::File::create("data.txt").expect("create failed");
  file.write_all("Hello World".as_bytes()).expect("write failed");
  file.write_all("\nTutorialsPoint".as_bytes()).expect("write failed");
  println!("data written to file" );
}


파일 읽기

open() 함수는 파일이 존재하지 않거나 어떤 이유로든 파일에 액세스할 수 없는 경우 Err 발생
open() 함수가 성공하면 파일 핸들을 반환

use std::io::Read;

fn main(){
   let mut file = std::fs::File::open("data.txt").unwrap();
   let mut contents = String::new();
   file.read_to_string(&mut contents).unwrap();
   print!("{}", contents);
}


파일 삭제

use std::fs;
fn main() {
   fs::remove_file("data.txt").expect("could not remove file");
   println!("file is removed");
}


파일에 데이터 추가

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

fn main() {
   let mut file = OpenOptions::new().append(true).open("data.txt").expect(
      "cannot open file");
   file.write_all("Hello World".as_bytes()).expect("write failed");
   file.write_all("\nTutorialsPoint".as_bytes()).expect("write failed");
   println!("file append success");
}


파일 복사

use std::io::Read;
use std::io::Write;

fn main() {
   let mut command_line: std::env::Args = std::env::args();
   command_line.next().unwrap();
   // skip the executable file name
   // accept the source file
   let source = command_line.next().unwrap();
   // accept the destination file
   let destination = command_line.next().unwrap();
   let mut file_in = std::fs::File::open(source).unwrap();
   let mut file_out = std::fs::File::create(destination).unwrap();
   let mut buffer = [0u8; 4096];
   loop {
      let nbytes = file_in.read(&mut buffer).unwrap();
      file_out.write(&buffer[..nbytes]).unwrap();
      if nbytes < buffer.len() { break; }
   }
}

profile
Mickey
post-custom-banner

0개의 댓글