文件操作

需求:

将文件中的内容按行读取出来,然后对改行的数据进行处理,最后将处理后的行数据存放到新的文件中。

使用RUST来处理的方法如下。

首先引入需要的标准库:

use std::io::prelude::*;

use std::fs::File;

use std::io::BufWriter;

use std::io::BufReader;

然后将处理函数放到一个main函数中,这是我处理小问题的习惯。

定义一个main函数,

fn man() {

}

将我们的实现代码放到上述的花括号中,首先试一下读取一个文件,代码如下。

use std::io::prelude::*;

use std::fs::File;

use std::io::BufWriter;

use std::io::BufReader;

fn main() {

    let file = File::open("./data.dat").unwrap();

    let mut fin = BufReader::new(file);

    let mut line = String::new();

    fin.read_line(&mut line).unwrap();

    println!("{}", line);

}

首先,通过标准库的File open一个文件,然后通过unwrap()获得文件。打开一个文件之后,再定义一个BufReader,用于读取文件的内容。读取的东西放到一个String中line,然后通过fin.read_line()函数读取文件的一行。最后打印出来读取的内容,看看是否读取成功。

现在,我们要读取文件的整个行,代码如下。

use std::io::prelude::*;

use std::fs::File;

use std::io::BufWriter;

use std::io::BufReader;

fn main() {

    let file = File::open("./data.dat").unwrap();

    let mut fin = BufReader::new(file);

    for line in fin.lines() {

        println!("{}", line.unwrap());

    }

}

  

这里,为了读取所有的行,RUST的BufReader提供了一个lines()函数,返回Lines迭代器,使用for来取出所有的行。需要注意的就是line需要通过upwrap()来释放出来,当然也可以采用别的更加安全的方法。

现在需要的就是将处理过的行line,存储到新的文件中,代码如下。

use std::io::prelude::*;

use std::fs::File;

use std::io::BufWriter;

use std::io::BufReader;

fn main() {

    let file = File::open("./data.dat").unwrap();

    let mut fin = BufReader::new(file);

    let file_new = File::create("./data_new.dat").unwrap();

    let mut fout = BufWriter::new(file_new);

    for line in fin.lines() {

        let new_line = ope_line(&line.unwrap());

        fout.write_all((new_line + "\n").as_bytes()); 

    }

    fout.flush();

}

fn ope_line(line: &String) -> String {

    line.clone()

}

我们使用BufWriter的write_all()方法很方便的将处理后的行输出了。

RUST有很强的内存管理,所以在处理数据的时候要小心,编译器很找出所有的关于内存的错误。

注意,如果处理的字符串中有中文,而且使用write_fmt()函数写文件的时候,格式化字符串时一定要用{},而不是{:?}。

Rustlang语言逐行处理文件的基本方法的更多相关文章

  1. R语言读取EXCEL文件的各种方法

    路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...

  2. C语言处理CSV文件的方法(一)

    什么是CSV文件 CSV是 Comma-separated values (逗号分隔值)的首字母缩写,它通常是以逗号且不仅限于逗号分隔各个值,我们都叫他CSV. 看下面的例子: China, Shan ...

  3. 关于swift语言中导入OC三方类找不到头文件的解决方法

    首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...

  4. python 逐行读取文件的三种方法

    方法一: 复制代码代码如下: f = open("foo.txt")             # 返回一个文件对象  line = f.readline()             ...

  5. [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...

  6. [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)] 项目实战 实战2:命令行工具minigrep 有了昨天的基础,我们今天来开始另一个稍微有点 ...

  7. [易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro]

    [易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro] 实用知识 宏Macro 我们今天来讲讲Rust中强大的宏Macro. Rust的宏macro是实现元编程的强大工具. ...

  8. [易学易懂系列|rustlang语言|零基础|快速入门|(20)|错误处理]

    [易学易懂系列|rustlang语言|零基础|快速入门|(20)|错误处理] 实用知识 错误处理 我们今天来讲讲Rust中的错误处理. 很多语言都有自己的错误处理方式,比如,java是异常处理机制. ...

  9. [易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化]

    [易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化] 实用知识 代码组织与模块化 我们知道,在现代软件开发的过程中,代码组织和模块化是应对复杂性的一种方式. 今天我们来 ...

随机推荐

  1. 【高德API】如何利用MapKit开发全英文检索的iOS地图

    原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的M ...

  2. A WebBrowser Toy

    原文:A WebBrowser Toy 记得上大学时,某老师为了防止学生上课不听讲,只准学生在课堂上看他放映的PPT,不准学生拷贝,而考试的内容恰恰是PPT上的内容,于是一个同学来找我,我就用VB写了 ...

  3. asp.net 操作XML

    using System.Xml; using System.Data; using System.IO;   string xmlpath = HttpRuntime.AppDomainAppPat ...

  4. HTML5 Canvas简简单单实现手机九宫格手势密码解锁

    原文:HTML5 Canvas简简单单实现手机九宫格手势密码解锁 早上花了一个半小时写了一个基于HTML Canvas的手势解锁,主要是为了好玩,可能以后会用到. 思路:根据配置计算出九个点的位置,存 ...

  5. 什么是MEAN全堆栈javascript开发框架

    什么是MEAN全堆栈javascript开发框架 使用JavaScript能够完整迅速做出Web应用程序,目前一套工具包括MongoDB.ExpressJS,AngularJS和Node.js越来越受 ...

  6. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  7. 图文解说PhpStorm 7.0版本新增内置工具

    很多PHP开发者,都比较关心PhpStorm 7.0版本的内置工具.今天我们将测试内置的Vagrant工具和SSH远端控制台工具. Vagrant工具集成在PhpStorm 7.0版本中,提高了IDE ...

  8. WEB项目(B/S系统)打包安装(总结篇)

    原文:WEB项目(B/S系统)打包安装(总结篇) 打包安装程序的制作选择性还很多的,有installshield,wise installer,inno setup这几个做打包安装项目都是很强大的,要 ...

  9. js实现是倒计时功能

    工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...

  10. 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元

    小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...