簡體   English   中英

以編程方式獲取OSX中的應用程序文件夾的名稱

[英]Programmatically get the name of the Application Folder in OSX

在美國和歐洲,應用程序文件夾名為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"

如果需要向用戶顯示本地化名稱,請查看國際化編程主題

[[[NSFileManager defaultManager] URLsForDirectory: NSApplicationDirectory inDomains:NSLocalDomainMask] lastObject];

我認為應該工作( 參考 )。 如果您使用的是早期版本的OS X且不支持NSSearchPathForDirectoriesInDomains() ,則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 /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM