br-file 0.0.3

This is an file
Documentation
use std::{fs};
use std::fs::{DirBuilder};
use std::path::{Path};


/// 创建目录
///
/// * path 路径带文件名 /home/roger/foo/bar/baz.txt
pub fn create_dir(mut path: &str) -> Result<(), String> {
    if path.contains(".") {
        let data = Path::new(path);
        let data = data.parent().unwrap();
        path = data.to_str().unwrap();
    }
    return match DirBuilder::new().recursive(true).create(path) {
        Ok(_) => {
            Ok(())
        }
        Err(e) => {
            Err(e.to_string())
        }
    };
}

/// 获取目录下所有文件列表
pub fn get_file_list(path: &str) -> Result<Vec<String>, String> {
    let mut files = vec![];
    let paths = match fs::read_dir(path) {
        Ok(e) => e,
        Err(e) => {
            return Err(e.to_string());
        }
    };
    for path in paths {
        match path {
            Ok(e) => {
                if e.path().is_file() {
                    let e = e.path().clone();
                    let file_name = e.as_os_str().to_str().unwrap().clone();
                    files.push(file_name.to_string());
                } else {
                    if e.path().is_dir() {
                        let e = e.path().clone();
                        let dir_name = e.as_os_str().to_str().unwrap().clone();
                        match get_file_list(dir_name) {
                            Ok(e) => {
                                files.extend(e);
                            }
                            Err(e) => {
                                return Err(e.to_string());
                            }
                        };
                    }
                }
            }
            Err(e) => {
                return Err(e.to_string());
            }
        }
    }
    Ok(files)
}

/// 获取目录下文件夹列表
pub fn get_dir_list(path: &str) -> Result<Vec<String>, String> {
    let mut dirs = vec![];
    let paths = fs::read_dir(path).unwrap();
    for path in paths {
        match path {
            Ok(e) => {
                if e.path().is_dir() {
                    dirs.push(e.file_name().to_str().unwrap().to_string().clone());
                }
            }
            Err(e) => {
                return Err(e.to_string());
            }
        }
    }
    return Ok(dirs);
}