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
0 comments:
張貼留言