隱私權政策

搜尋此網誌

技術提供:Blogger.

關於我自己

我的相片
目前從事軟體相關行業,喜歡閱讀、健身、喝調酒。習慣把遇到的問題記下來,每天做一些整理方便自己以後查。 Python、Rust、Kotlin等程式語言皆為自學,目前比較著重在Rust語言,歡迎一起討論。

2023年12月13日 星期三

Rust 檔案操作 write - 撰寫文檔


這篇[1] 有提到怎麼讀取文檔

而這篇為撰寫文檔

文檔操作都一樣放在std::fs下面



write[2]

write用來把資料寫入檔案裡

文件這樣解釋

pub fn write<P: AsRef<Path>, C: AsRef<[u8]>>(path: P, contents: C) -> Result<()>

需要輸入兩個

一個是路徑

另一個是需要撰寫的文字

最後輸出Result


例子

拿一個例子

use std::fs;

fn main() {
    fs::write("foo.txt", "Lorem ipsum").unwrap();
    fs::write("bar.txt", "dolor sit").unwrap();
}

我要在foo.txt放入Lorem ipsum

以及在bar.txt放入dolor sit

因回傳是一個Result

所以要unwrap

最後呈現結果為




這邊做幾個小實驗

1. 文字換行

use std::fs;

fn main() {
    fs::write("foo.txt", "Lorem ipsum\ndolor sit").unwrap();
}

再輸入的文字打上換行符號

在txt檔裡面也可以正常換行



2. 絕對路徑

write一樣可以使用絕對路徑

use std::fs;

fn main() {
    fs::write("D:\\Blog\\problem\\foo.txt", "Lorem ipsum\ndolor sit").unwrap();
}

一樣可以正常寫入

而如果路徑錯誤

則會出現panic

use std::fs;

fn main() {
    fs::write("D:\\Blog\\problme\\foo.txt", "Lorem ipsum\ndolor sit").unwrap();
}
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os
{ code: 3, kind: NotFound, message: "系統找不到指定的路徑。" }', src\main.rs:4:71 stack backtrace:


注意事項

以前有犯過一些錯,這邊先打起來

1. write是直接覆寫,也就是原本內容會不見

2. 檔案不存在write會直接創立檔案

參考資料

[1] https://lageeblog.blogspot.com/2023/12/rust-readtostringread.html

[2] https://doc.rust-lang.org/std/fs/fn.write.html

0 comments:

張貼留言