zoukankan      html  css  js  c++  java
  • rust 读取文件

    1、逐行读文本

    use std::fs::File;
    use std::io::{self, BufRead};
    use std::path::Path;
    
    fn main() {
        // File hosts must exist in current path before this produces output
        if let Ok(lines) = read_lines("./hosts") {
            // Consumes the iterator, returns an (Optional) String
            for line in lines {
                if let Ok(ip) = line {
                    println!("{}", ip);
                }
            }
        }
    }
    
    // The output is wrapped in a Result to allow matching on errors
    // Returns an Iterator to the Reader of the lines of the file.
    fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
    where P: AsRef<Path>, {
        let file = File::open(filename)?;
        Ok(io::BufReader::new(file).lines())
    }

    2 一次读入文本

    use std::fs::File;
    use std::io::prelude::*;
    use std::path::Path;
    
    fn main() {
        // Create a path to the desired myfile
        let path = Path::new("a.txt");
        let display = path.display();
    
        // Open the path in read-only mode, returns `io::Result<File>`
        let mut myfile = match File::open(&path) {
            Err(why) => panic!("couldn't open {}: {}", display, why),
            Ok(myfile) => myfile,
        };
    
        // Read the myfile contents into a string, returns `io::Result<usize>`
        let mut s = String::new();
        match myfile.read_to_string(&mut s) {
            Err(why) => panic!("couldn't read {}: {}", display, why),
            Ok(_) => print!("{} contains:
    {}", display, s),
        }
    
        // `myfile` goes out of scope, and the "hello.txt" myfile gets closed
    }

    3  读取二进制文件 

    use std::fs::File;
    use std::env;
    use std::io::prelude::*;
    fn main() -> std::io::Result<()> {
        let mut param=env::args();
        if param.len() != 2{
            Err(std::io::Error::new(std::io::ErrorKind::Other,"usage:bintool inputfile"))
        }
        else{
            let _=param.next();
            let inputfile=param.next();
            let mut _inputfile = File::open(inputfile.unwrap())?;
            //let mut _outputfile= File::create(outputfile.unwrap())?;
            let mut buffer:[u8;16]=[0;16];
            while let std::io::Result::Ok(len) = _inputfile.read(&mut buffer){
                //println!("{}",len);
                if len == 0 {
                    break;
                }
                else{
                    for i in 0..len{
                        //_outputfile.write_fmt(format_args!("{:#02x} ",buffer[i]));
                        print!("{:02x} ",buffer[i]);
                    }println!("
    ");
                }
            }
            Ok(())
        }
    }

    参考:https://doc.rust-lang.org/rust-by-example/std_misc/file/open.html

    https://www.it610.com/article/1282640012466208768.htm

  • 相关阅读:
    自动完成
    自动验证[2]
    自动验证[1]
    PHP算法
    用户请求服务器资源过程
    CURD 操作 [2]
    [转]PHP部分常见算法
    CURD 操作 [1]
    常用正则表达式集锦
    centos 6.4 FTP安装和配置
  • 原文地址:https://www.cnblogs.com/pu369/p/15167406.html
Copyright © 2011-2022 走看看