수색…
전체 파일을 문자열로 읽음
use std::fs::File;
use std::io::Read;
fn main() {
let filename = "src/main.rs";
// Open the file in read-only mode.
match File::open(filename) {
// The file is open (no error).
Ok(mut file) => {
let mut content = String::new();
// Read all the file content into a variable (ignoring the result of the operation).
file.read_to_string(&mut content).unwrap();
println!("{}", content);
// The file is automatically closed when is goes out of scope.
},
// Error handling.
Err(error) => {
println!("Error opening file {}: {}", filename, error);
},
}
}
파일을 한 줄씩 읽음
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
let filename = "src/main.rs";
// Open the file in read-only mode (ignoring errors).
let file = File::open(filename).unwrap();
let reader = BufReader::new(file);
// Read the file line by line using the lines() iterator from std::io::BufRead.
for (index, line) in reader.lines().enumerate() {
let line = line.unwrap(); // Ignore errors.
// Show the line and its number.
println!("{}. {}", index + 1, line);
}
}
파일에 쓰기
use std::env;
use std::fs::File;
use std::io::Write;
fn main() {
// Create a temporary file.
let temp_directory = env::temp_dir();
let temp_file = temp_directory.join("file");
// Open a file in write-only (ignoring errors).
// This creates the file if it does not exist (and empty the file if it exists).
let mut file = File::create(temp_file).unwrap();
// Write a &str in the file (ignoring the result).
writeln!(&mut file, "Hello World!").unwrap();
// Write a byte string.
file.write(b"Bytes\n").unwrap();
}
Vec로 파일 읽기
use std::fs::File;
use std::io::Read;
fn read_a_file() -> std::io::Result<Vec<u8>> {
let mut file = try!(File::open("example.data"));
let mut data = Vec::new();
try!(file.read_to_end(&mut data));
return Ok(data);
}
std::io::Result<T>
는 Result<T, std::io::Error>
의 별칭입니다.
try!()
매크로는 오류가 발생하면 함수에서 반환됩니다.
read_to_end()
는 명시 적으로 d를 use
하는 std::io::Read
특성의 한 방법입니다.
read_to_end()
는 읽은 데이터를 반환하지 않습니다. 대신 데이터를 컨테이너에 넣습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow