【发布时间】:2017-01-10 09:10:21
【问题描述】:
是否有任何 API 可以获取用户的特殊文件夹,例如 macOS 中的 Downloads 或 Documents 文件夹?
【问题讨论】:
标签: objective-c swift macos
是否有任何 API 可以获取用户的特殊文件夹,例如 macOS 中的 Downloads 或 Documents 文件夹?
【问题讨论】:
标签: objective-c swift macos
根据我的经验,我通常用于按照以下示例获取主目录路径。
第一种方式:
NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES);
NSString * desktopPath = [paths objectAtIndex:0];
桌面版: NSDesktopDirectory
对于文档: NSDocumentDirectory
下载: NSDownloadsDirectory
第二种方式:
不是最好的方法,但我们也可以通过这种方法获得路径。
使用不同语言的本地化。
当前用户的$Home目录:
[NSURL fileURLWithPath:NSHomeDirectory()];
$Home/Desktop
[NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"]];
$Home/文档:
[NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];
$Home/下载:
[NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Downloads"]];
希望这将帮助您找到特殊的文件夹路径。
【讨论】:
正如其他人已经提到的,更现代的方法是使用NSFileManager 检索URL:
NSURL *desktopUrl = [NSFileManager.defaultManager URLsForDirectory:NSDesktopDirectory inDomains:NSUserDomainMask].firstObject;
【讨论】:
用于 Swift 5.x 的桌面:
var DesktopDir : String = {
let paths = NSSearchPathForDirectoriesInDomains(.desktopDirectory, .userDomainMask, true)
return paths[0]
}()
【讨论】: