在美国和欧洲,应用程序文件夹是命名的Applications
,但在中文或日文本地化下它是如何命名的?
有没有办法以编程方式获取文件夹的名称?
在美国和欧洲,应用程序文件夹是命名的Applications
,但在中文或日文本地化下它是如何命名的?
有没有办法以编程方式获取文件夹的名称?
文件系统中的目录名称始终为英文。目录可以附加本地化名称以向用户显示,但这些不是您用于访问目录的名称。来自国际化编程主题:
您需要了解应用程序中的本地化路径名并适当地显示它们。本地化路径名仅用于显示目的,在访问文件系统时绝不应使用。在代码中处理文件和目录时,包括需要写入缓存或用户首选项时,您应该继续使用实际路径名。唯一应该使用本地化路径名的情况是,当您希望通过应用程序的用户界面向用户显示该路径时。
也就是说,您可以使用以下方式以编程方式获取路径NSSearchPathForDirectoriesInDomains
:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES);
// Returns an NSArray containing the string "/Applications"
您还可以使用-[NSFileManager URLsForDirectory:inDomains:]
:
NSArray *urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationDirectory inDomains:NSLocalDomainMask];
// Returns an NSArray containing the NSURL "file://localhost/Applications"
如果您需要向用户显示本地化名称,请查看Internationalization Programming Topics。
[[[NSFileManager defaultManager] URLsForDirectory: NSApplicationDirectory inDomains:NSLocalDomainMask] lastObject];
我认为应该工作(参考)。如果您使用的是以前版本的 OS X 并且 URLsForDirectory 不受支持,NSSearchPathForDirectoriesInDomains()
则可以选择。
要获取适合呈现给用户的文件夹(或具有本地化名称的应用程序)的本地化名称,请使用:
NSString *localizedName = [[NSFileManager defaultManager] displayNameAtPath:path];
对于 Applications 文件夹,您可以使用:
NSString *localizedApplicationDirectoryName = [[NSFileManager defaultManager] displayNameAtPath:NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES).lastObject];
迅速:
let urls = FileManager().urls(for: .applicationDirectory, in: .localDomainMask)
▿ 1 个元素
▿ 0 : file:///Applications/
let urls = FileManager().urls(for: .allApplicationsDirectory, in: .localDomainMask)
▿ 4 个元素
▿ 0:file:///Applications/
▿ 1:file:///Applications/Utilities/
▿ 2:file:///Developer/Applications/
▿ 3:file:///Applications/Demos/