注意:本回答针对 Rust 1.0 之前的版本,已经过时。请参阅链接的重复内容获取最新的答案。
是的,0.8 版本太旧了,对于 0.10-pre 的主分支,我会使用:
use std::io::BufferedReader;
use std::io::File;
use std::from_str::from_str;
let fname = "in.txt";
let path = Path::new(fname);
let mut file = BufferedReader::new(File::open(&path));
for line_iter in file.lines() {
let line : ~str = match line_iter { Ok(x) => x, Err(e) => fail!(e) };
let chunks: ~[&str] = line.split_terminator(|c: char| c.is_whitespace()).collect();
let terms: ~[int] = vec::from_fn(nterms, |i: uint| parse_str::<int>(chunks[i+1]));
...
}
在哪里
fn parse_str<T: std::from_str::FromStr>(s: &str) -> T {
let val = match from_str::<T>(s) {
Some(x) => x,
None => fail!("string to number parse error")
};
val
}
写入文本文件:
use std::io::{File, Open, Read, Write, ReadWrite};
use std::path::Path;
let fname = "out.txt"
let p = Path::new(fname);
let mut f = match File::open_mode(&p, Open, Write) {
Ok(f) => f,
Err(e) => fail!("file error: {}", e),
};
然后你可以使用任何一个
f.write_line("to be written to text file");
f.write_uint(5);
f.write_int(-1);
文件描述符会在作用域退出时自动关闭,因此没有f.close()方法。希望这能帮到你。
rust
的世界里,0.8版本已经很老了,现在你需要使用let filereader = File::open(p)
。 - cnd