Rust
Datei I / O
Suche…
Eine Datei als Ganzes als String lesen
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);
},
}
}
Liest eine Datei Zeile für Zeile
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);
}
}
Schreiben Sie in eine Datei
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();
}
Lesen Sie eine Datei als 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>
ist ein Alias für Result<T, std::io::Error>
.
Das try!()
-Makro kehrt bei Fehler von der Funktion zurück.
read_to_end()
ist eine Methode von std::io::Read
, die explizit use
d.
read_to_end()
gibt keine gelesenen Daten zurück. Stattdessen werden Daten in den angegebenen Container eingefügt.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow