rust讀取文件

內(nèi)容都是谷歌前兩個(gè)結(jié)果曾掂,我也不是謙虛领舰,只是普通的復(fù)制粘貼

std::fs::File::open

use std::error::Error;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    // Create a path to the desired file
    let path = Path::new("hello.txt");
    let display = path.display();

    // Open the path in read-only mode, returns `io::Result<File>`
    let mut file = match File::open(&path) {
        // The `description` method of `io::Error` returns a string that
        // describes the error
        Err(why) => panic!("couldn't open {}: {}", display,
                                                   why.description()),
        Ok(file) => file,
    };

    // Read the file contents into a string, returns `io::Result<usize>`
    let mut s = String::new();
    match file.read_to_string(&mut s) {
        Err(why) => panic!("couldn't read {}: {}", display,
                                                   why.description()),
        Ok(_) => print!("{} contains:\n{}", display, s),
    }

    // `file` goes out of scope, and the "hello.txt" file gets closed
}

最后一句話看的出來(lái)rust可真他媽安全,都不用close了,當(dāng)然因?yàn)檫@個(gè)特性寫別的語(yǔ)言的時(shí)候可能就會(huì)忘掉這碼事也不太好

復(fù)制于:
https://rustbyexample.com/std_misc/file/open.html

use std::env;
use std::fs::File;
use std::io::prelude::*;

fn main() {
    // --snip--
    println!("In file {}", filename);

    let mut f = File::open(filename).expect("file not found");

    let mut contents = String::new();
    f.read_to_string(&mut contents)
        .expect("something went wrong reading the file");

    println!("With text:\n{}", contents);
}

跟上面丑丑的代碼相比号杏,官方書的代碼稍微漂亮點(diǎn),至少多用了個(gè)expect。盾致。主经。
復(fù)制于:
https://doc.rust-lang.org/book/second-edition/ch12-02-reading-a-file.html

trait std::io::Read

pub trait Read {
    fn read(&mut self, buf: &mut [u8]) -> Result<[usize]>; //返回讀了多少個(gè)byte

    unsafe fn initializer(&self) -> Initializer { ... }
    fn read_to_end(&mut self, buf: &mut Vec<[u8]>) -> Result<usize> { ... } //全讀進(jìn)Vec
    fn read_to_string(&mut self, buf: &mut String) -> Result<usize> { ... } //全讀進(jìn)String
    fn read_exact(&mut self, buf: &mut [u8]) -> Result<[()]> { ... } // 讀滿buf
    fn by_ref(&mut self) -> &mut Self
    where
        Self: Sized,
    { ... }
    fn bytes(self) -> Bytes<Self> //迭代器
    where
        Self: Sized,
    { ... }
    fn chars(self) -> Chars<Self> //迭代器,迭代UTF-8
    where
        Self: Sized,
    { ... }
    fn chain<R: Read)>(self, next: R) -> Chain<Self, R>
    where
        Self: Sized,
    { ... }
    fn take(self, limit: u64) -> Take<Self>
    where
        Self: Sized,
    { ... }
}

之前用到的read_to_string方法主要源自于File應(yīng)用了Read這個(gè)trait
Read的這些方法可以做一些騷操作庭惜,當(dāng)然我絕對(duì)是不會(huì)用的罩驻,無(wú)敵String,然后關(guān)我屁事护赊。
復(fù)制于:
https://doc.rust-lang.org/std/io/trait.Read.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惠遏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子骏啰,更是在濱河造成了極大的恐慌节吮,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件判耕,死亡現(xiàn)場(chǎng)離奇詭異透绩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)壁熄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門帚豪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人草丧,你說我怎么就攤上這事狸臣。” “怎么了昌执?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵固棚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我仙蚜,道長(zhǎng)此洲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任委粉,我火速辦了婚禮呜师,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贾节。我一直安慰自己汁汗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布栗涂。 她就那樣靜靜地躺著知牌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斤程。 梳的紋絲不亂的頭發(fā)上角寸,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天菩混,我揣著相機(jī)與錄音,去河邊找鬼扁藕。 笑死沮峡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亿柑。 我是一名探鬼主播邢疙,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼望薄!你這毒婦竟也來(lái)了疟游?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤痕支,失蹤者是張志新(化名)和其女友劉穎乡摹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體采转,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聪廉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了故慈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板熊。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖察绷,靈堂內(nèi)的尸體忽然破棺而出干签,到底是詐尸還是另有隱情,我是刑警寧澤拆撼,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布容劳,位于F島的核電站,受9級(jí)特大地震影響闸度,放射性物質(zhì)發(fā)生泄漏竭贩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一莺禁、第九天 我趴在偏房一處隱蔽的房頂上張望留量。 院中可真熱鬧,春花似錦哟冬、人聲如沸楼熄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)可岂。三九已至,卻和暖如春翰灾,著一層夾襖步出監(jiān)牢的瞬間缕粹,已是汗流浹背稚茅。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留致开,地道東北人峰锁。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓萎馅,卻偏偏與公主長(zhǎng)得像双戳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糜芳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 說明本次redis集群安裝在rhel6.8 64位機(jī)器上飒货,redis版本為3.2.8,redis的gem文件版本為...
    讀或?qū)?/span>閱讀 14,660評(píng)論 3 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理峭竣,服務(wù)發(fā)現(xiàn)塘辅,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 教育在于對(duì)困難脫敏皆撩,做日常滲透扣墩,不知不覺不小心學(xué)會(huì)。 教育能力是化繁為極簡(jiǎn)扛吞,是容易呻惕,是簡(jiǎn)單,是樸素滥比。 好老師是開門...
    咸叔說閱讀 254評(píng)論 0 3
  • 第一章 她 莫無(wú)語(yǔ) 行走在江湖亚脆,傾城之色,年幼喪父母盲泛,跟在奕槐前輩身邊濒持,武功超群,行俠仗義寺滚,著紅衣柑营,手持“無(wú)意”劍...
    夏云悠滴小尾巴閱讀 172評(píng)論 0 0