日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在Rust中讀取和寫入文件

知道如何讀寫文件對各種用途都很有用。在 Rust 中,這項任務(wù)是通過標準庫中的文件系統(tǒng)模塊(??std::fs??)完成的。在這篇文章中,我將向你介紹如何使用這個模塊。

10年積累的做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有耒陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

為了演示這項任務(wù),我準備了一些示例代碼,也可以在 ??GitHub?? 上找到。

準備工作

在使用 Rust 時,失敗的函數(shù)會返回 ??Result?? 類型。尤其是文件系統(tǒng)模塊會返回專門的類型 ??std::io::Result??。有了這些知識,你可以從 ??main()?? 函數(shù)中返回相同的類型:

    fn  main() ->  std::io::Result<()> {
/* ...code comes here... */

Rust 文件寫入

在 Rust 中執(zhí)行文件的 I/O 操作是相對容易的。寫入文件可以簡化為一行:

    use  std::fs;
fs::write("favorite_websites.txt", b"opensource.com")?;
Ok(())

使用錯誤傳播操作符 ??(?)??,錯誤信息被傳遞到調(diào)用函數(shù)中,隨后可以處理錯誤。由于 ??main()?? 是調(diào)用棧中唯一的其他函數(shù),如果寫操作失敗,錯誤信息將被傳遞到控制臺輸出。

??fs::write?? 函數(shù)的語法是非常。第一個參數(shù)是文件路徑,它必須是 ??std::path::Path?? 類型。第二個參數(shù)是內(nèi)容,它實際上是一個字節(jié)切片(??[u8]??)。Rust 將傳遞的參數(shù)轉(zhuǎn)換為正確的類型。幸運的是,這些類型基本上是下面的例子中所處理的唯一類型。

使用文件描述符類型 ??std::fs::File?? 可以實現(xiàn)對寫操作更簡潔的訪問:

    let mut file = fs::File::create("favorite_websites.txt")?;
file.write_all(b"opensource.com\n")?;
Ok(())

由于文件類型實現(xiàn)了 ??Write?? 特性,所以可以使用相關(guān)的方法來寫入文件。然而,??create?? 方法可以覆蓋一個已經(jīng)存在的文件。

為了獲得對文件描述符的更多控制,必須使用 ??std::fs::OpenOptions?? 類型。這提供了類似于其他語言中的打開模式:

    let mut file = fs::OpenOptions::new()
.append(true)
.open("favorite_websites.txt")?;

file.write_all(b"sourceforge.net\n")?;

Rust 文件讀取

適用于寫的東西也適用于讀。讀取也可以通過簡單的一行代碼來完成:

let websites = fs::read_to_string("favorite_websites.txt")?;

以上一行讀取文件的內(nèi)容并返回一個字符串。除了讀取字符串,還有 ??std::fs::read?? 函數(shù),如果文件包含二進制數(shù)據(jù),該函數(shù)會將數(shù)據(jù)讀成一個字節(jié)向量。

下一個例子顯示了如何將文件的內(nèi)容讀入內(nèi)存,隨后逐行打印到控制臺:

    let file = fs::File::open("favorite_websites.txt")?;
let lines = io::BufReader::new(file).lines();
for line in lines {
if let Ok(_line) = line {
println!(">>> {}", _line);
}
}

總結(jié)

如果你已經(jīng)熟悉了其他編程語言,你可能已經(jīng)注意到?jīng)]有 ??close-?? 函數(shù)(或類似的)來釋放文件句柄。在 Rust 中,當相關(guān)變量超出作用域,文件句柄就會被釋放。為了定義關(guān)閉行為,可以在文件表示的周圍應(yīng)用作用域 ??({ })??。我建議你熟悉 ??Read?? 和 ??Write?? 特性,因為你可以在許多其他類型中找到這個特性的實現(xiàn)。


標題名稱:如何在Rust中讀取和寫入文件
網(wǎng)站地址:http://www.5511xx.com/article/djpedej.html