如何在Rust中读写文本文件?

如何在Rust中读写文本文件?,rust,rust-0.8,Rust,Rust 0.8,注意:此问题与pre-Rust 1.0有关,因此已过时。有关最新答案,请参阅 我正在Win8上使用Rust 0.8编写一个测试程序,我需要使用数组/向量/列表在文本文件中读取和写入程序使用的一些参数,以访问单独的行 在花了相当长的时间试图找到有效的方法后,我能找到的最接近的方法如下: use std::rt::io::{file, Open}; use std::path::Path; use std::rt::io::file::FileInfo; fn main () { let

注意:此问题与pre-Rust 1.0有关,因此已过时。有关最新答案,请参阅

我正在Win8上使用Rust 0.8编写一个测试程序,我需要使用数组/向量/列表在文本文件中读取和写入程序使用的一些参数,以访问单独的行

在花了相当长的时间试图找到有效的方法后,我能找到的最接近的方法如下:

use std::rt::io::{file, Open};
use std::path::Path;
use std::rt::io::file::FileInfo;

fn main () {

    let mut reader : file::FileReader = Path("xxxx.txt").open_reader(Open)  
    .expect("'xxxx.txt' could not be opened");

    println("Completed");   
}
如果文件存在,则上述操作“有效”

有人能给我举一个例子,说明我所说的要求是怎样做的吗

注意:此答案与pre-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) };
    // preprocess line for further processing, say split int chunks separated by spaces
    let chunks: ~[&str] = line.split_terminator(|c: char| c.is_whitespace()).collect();
    // then parse chunks
    let terms: ~[int] = vec::from_fn(nterms, |i: uint| parse_str::<int>(chunks[i+1]));
    ...
}
那么你可以使用任何

f.write_line("to be written to text file");
f.write_uint(5);
f.write_int(-1);
文件描述符将在作用域退出时自动关闭, 因此没有f.close()方法。
希望这会有所帮助。

0.8在
rust
世界中太旧了,现在您需要
let filereader=File::open(p)
从1.7开始,请参阅参考文档中的BufReader示例:您从哪里提取
entrems
?它是什么?你能为Rust 1.0更新它吗?
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);