隱私權政策

搜尋此網誌

技術提供:Blogger.

關於我自己

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

2023年12月17日 星期日

Rust 檔案操作remove_dir、remove_dir_all、remove_file - 刪除檔案


上一篇有介紹到創建路徑create_dir和create_dir_all[1]

這次介紹三個刪除檔案的方法

分別是remove_dir、remove_dir_all、remove_file

前面兩個remove_dir、remove_dir_all主要是刪除資料夾

remove_file則是刪除檔案

這三個都是被歸類在std::fs底下


std::fs[1]

fs被稱作filesystem

這個包主要是用來對檔案操作

其中也包括資料夾相關操作


remove_dir[3]

pub fn remove_dir<P: AsRef<Path>>(path: P) -> Result<()>

remove_dir用處為刪除一個空的資料夾

輸入為路徑

回傳一個Result

刪除成功會回傳Ok

有四種情形會失敗

1. 路徑不存在

2. 路徑不是一個資料夾

3. 沒有操作資料夾權限

4. 該資料夾不是空的


實際的例子

use std::fs;
fn main() {
    let path = "test";
    fs::remove_dir(path).unwrap();
}

設定一個路徑

透過remove_dir移除此資料夾


如果資料夾不是空的

則會顯示

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os
{ code: 145, kind: DirectoryNotEmpty, message: "目錄不是空的。" }', src\main.rs:4:26 stack backtrace:


remove_dir_all[4]

pub fn remove_dir_all<P: AsRef<Path>>(path: P) -> Result<()>

remove_dir_all可以刪除路徑內所有東西,包括資料夾本身

輸入路徑

輸出Result

若對資料夾沒有操作權則有error

使用這個要小心

刪掉了找不回來

舉個例子

use std::fs;
fn main() {
    let path = "test";
    fs::remove_dir_all(path).unwrap();
}

原本資料夾有東西


使用後則直接刪除


remove_file[5]

pub fn remove_file<P: AsRef<Path>>(path: P) -> Result<()>

上面兩個都是刪除資料夾

這個則是刪除檔案本身

一樣輸入路徑輸出Result

刪除成功則是Ok

以下情形則會Error

1. 目標檔案不存在

2. 該路徑指向資料夾

3. 沒有對該檔案的操作權


舉個例子

use std::fs;
fn main() {
    let path = "test/eee";
    fs::remove_file(path).unwrap();
}

這樣可以透過remove_file將test路徑底下的eee檔案刪除







參考資料

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

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

[3] https://doc.rust-lang.org/std/fs/fn.remove_dir.html

[4] https://doc.rust-lang.org/std/fs/fn.remove_dir_all.html

[5] https://doc.rust-lang.org/std/fs/fn.remove_file.html

0 comments:

張貼留言