Rust 檔案操作 create_dir和create_dir_all - 根據路徑創建資料夾
如果要創建一個軟體給使用者
很多時候會不確定是不是設定的路徑資料夾使用者也有
這時候通常就會直接幫使用者創立路徑資料夾
創立資料夾有兩種方式
一種是create_dir,另一種則是create_dir_all
先看看文件這樣解釋
create_dir[1]
pub fn create_dir<P: AsRef<Path>>(path: P) -> Result<()>
輸入一個路徑
根據路徑創建一個空的資料夾
回傳Result
如果創建成功回傳Ok
會有三種失敗情況
1. 使用者對該資料夾沒有操作權
2. 該資料夾已經存在
3. 該資料夾父路徑不存在,也就是給的路徑是多個資料夾的,但他的上一層資料夾不存在,此使可以用create_dir_all創建
舉一個簡單程式示範一下
use std::fs;
fn main() {
let path = "test";
if !fs::metadata(path).is_ok() {
fs::create_dir(path).unwrap();
}
}
metadata[2]可以判斷path路徑的資訊
透過is_ok()初步判定這個資料夾是否存在
如果不存在則透過create_dir創立
create_dir_all[3]
pub fn create_dir_all<P: AsRef<Path>>(path: P) -> Result<()>
create_dir_all一樣是輸入路徑
輸出會給Result
跟create_dir不一樣的是
他可以一次把路徑內的資料夾都創建好
例如
use std::fs;
fn main() {
let path = "test1/test2/test3/test4/test5";
fs::create_dir_all(path).unwrap();
}
這次就不用metadata了
前面會需要主要是先判斷資料夾是否已經存在
但create_dir_all即使已經存在,也不會報panic
也不會覆蓋原本資料夾的東西
最後資料夾路徑可以長這樣
參考資料
[1] https://doc.rust-lang.org/std/fs/fn.create_dir.html
[2] https://doc.rust-lang.org/std/fs/fn.metadata.html
[3] https://doc.rust-lang.org/std/fs/fn.create_dir_all.html
0 comments:
張貼留言