5个不稳定版本
0.3.0 | 2020年9月26日 |
---|---|
0.2.0 | 2019年6月11日 |
0.1.2 | 2019年6月8日 |
0.1.1 | 2019年6月8日 |
0.1.0 | 2019年6月8日 |
#321 在 文件系统
18,580 每月下载量
在 54 个crates中使用 (直接使用39个)
14KB
175 行
platform-dirs-rs
Rust库,用于获取应用程序和用户目录的平台相关目录路径。
遵循以下标准
- Linux/*BSD: XDG Base Directories 和 XDG User Directories
- macOS: 标准目录
- Windows: 已知文件夹
安装
将以下内容添加到您的Cargo.toml文件中
[dependencies]
platform-dirs = "0.3.0"
示例
获取路径
use platform_dirs::{AppDirs, UserDirs};
fn main() {
let app_dirs = AppDirs::new(Some("name"), false).unwrap();
dbg!(&app_dirs);
// AppDirs {
// cache_dir: "/home/cjbassi/.cache/name",
// config_dir: "/home/cjbassi/.config/name",
// data_dir: "/home/cjbassi/.local/share/name",
// state_dir: "/home/cjbassi/.local/state/name"
// }
let user_dirs = UserDirs::new().unwrap();
dbg!(&user_dirs);
// UserDirs {
// desktop_dir: "/home/cjbassi/Desktop",
// document_dir: "/home/cjbassi/Documents",
// download_dir: "/home/cjbassi/Downloads",
// music_dir: "/home/cjbassi/Music",
// picture_dir: "/home/cjbassi/Pictures",
// public_dir: "/home/cjbassi/Public",
// video_dir: "/home/cjbassi/Videos"
// }
}
打开配置文件
use std::fs::{self, File};
use platform_dirs::AppDirs;
fn main() {
let app_dirs = AppDirs::new(Some("name"), true).unwrap();
let config_file_path = app_dirs.config_dir.join("config-file");
fs::create_dir_all(&app_dirs.config_dir).unwrap();
let file = if config_file_path.exists() {
File::open(config_file_path).unwrap()
} else {
File::create(config_file_path).unwrap()
};
}
路径列表
AppDirs
目录 | Windows | Linux/*BSD | macOS |
---|---|---|---|
cache_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_CACHE_HOME (~/.cache ) |
~/Library/Caches |
config_dir | %APPDATA% (C:\Users\%USERNAME%\AppData\Roaming ) |
$XDG_CONFIG_HOME (~/.config ) |
~/Library/Application Support |
data_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_DATA_HOME (~/.local/share ) |
~/Library/Application Support |
state_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local ) |
$XDG_STATE_HOME (~/.local/state ) |
~/Library/Application Support |
UserDirs
目录 | Windows | Linux/*BSD | macOS |
---|---|---|---|
desktop_dir | {FOLDERID_Desktop} (C:\Users\%USERNAME%\Desktop ) |
$XDG_DESKTOP_DIR (~/Desktop ) |
~/Desktop |
文档目录 | {FOLDERID_Documents} (C:\Users\%USERNAME%\Documents ) |
$XDG_DOCUMENTS_DIR (~/Documents ) |
~/Documents |
下载目录 | {FOLDERID_Downloads} (C:\Users\%USERNAME%\Downloads ) |
$XDG_DOWNLOAD_DIR (~/Downloads ) |
~/Downloads |
音乐目录 | {FOLDERID_Music} (C:\Users\%USERNAME%\Music ) |
$XDG_MUSIC_DIR (~/Music ) |
~/Music |
图片目录 | {FOLDERID_Pictures} (C:\Users\%USERNAME%\Pictures ) |
$XDG_PICTURES_DIR (~/Pictures ) |
~/Pictures |
公共目录 | {FOLDERID_Public} (C:\Users\%USERNAME%\Public ) |
$XDG_PUBLICSHARE_DIR (~/Public ) |
~/Public |
视频目录 | {FOLDERID_Videos} (C:\Users\%USERNAME%\Videos ) |
$XDG_VIDEOS_DIR (~/Videos ) |
~/Movies |
比较
platform-dirs 在几个方面与 dirs-rs 和 directories-rs 不同
- 允许在 macOS 上使用 XDG 规范进行 CLI 应用
- 将 macOS 上的配置目录从
Library/Preferences
更改为Library/Application Support
Library/Preferences
应用于 macOS 唯一的 plist 首选项:[信息](https://www.reddit.com/r/rust/comments/8hbzyx/can_people_here_give_the_dirs_and_directories/dyj4qtk/)
- 仅包括跨平台的目录
AppDirs
:- 删除
data_local_dir
- 删除
UserDirs
:- 删除
runtime_dir
、executable_dir
- 删除
- 提供比 directories-rs 简单的 API
UserDirs
字段不再为Options
- 结构字段现在是公开可访问的
- 将
ProjectDirs
结构合并到AppDirs
- 向
AppDirs
添加state_dir
- 文档可以在页面底部找到 这里
- 用于状态化应用程序数据,如日志、历史记录等
- 在Linux上,如果未设置,则返回默认平台的
UserDirs
值,而不是返回None
依赖项
~53–510KB