概要
- アプリから何かしらのファイルを保存したい場合、フォルダのパスの取得にurls(for:in:)を使用する。
- 以下はその際の出力のメモ書き。
参考
出力例
FileManager.SearchPathDirectory | Detail | Paths |
---|---|---|
applicationDirectory | Supported applications (/Applications). | /Users/hogeuser/Applications |
demoApplicationDirectory | Unsupported applications and demonstration versions. | /Users/hogeuser/Applications/Demos |
developerApplicationDirectory | Developer applications (/Developer/Applications). | /Users/hogeuser/Developer/Applications |
adminApplicationDirectory | System and network administration applications. | /Users/hogeuser/Applications/Utilities |
libraryDirectory | Various user-visible documentation, support, and configuration files (/Library). | /Users/hogeuser/Library |
developerDirectory | Developer resources (/Developer). | /Users/hogeuser/Developer |
userDirectory | User home directories (/Users). | (nil) |
documentationDirectory | Documentation. | /Users/hogeuser/Library/Documentation |
documentDirectory | Document directory. | /Users/hogeuser/Documents |
coreServiceDirectory | Core services (System/Library/CoreServices). | (nil) |
autosavedInformationDirectory | The user’s autosaved documents (Library/Autosave Information). | /Users/hogeuser/Library/Autosave Information |
desktopDirectory | The user’s desktop directory. | /Users/hogeuser/Desktop |
cachesDirectory | Discardable cache files (Library/Caches). | /Users/hogeuser/Library/Caches |
applicationSupportDirectory | Application support files (Library/Application Support). | /Users/hogeuser/Library/Application Support |
downloadsDirectory | The user’s downloads directory. | /Users/hogeuser/Downloads |
inputMethodsDirectory | Input Methods (Library/Input Methods). | /Users/hogeuser/Library/Input Methods |
moviesDirectory | The user’s Movies directory (~/Movies). | /Users/hogeuser/Movies |
musicDirectory | The user’s Music directory (~/Music). | /Users/hogeuser/Music |
picturesDirectory | The user’s Pictures directory (~/Pictures). | /Users/hogeuser/Pictures |
printerDescriptionDirectory | The system’s PPDs directory (Library/Printers/PPDs). | (nil) |
sharedPublicDirectory | The user’s Public sharing directory (~/Public). | /Users/hogeuser/Public |
preferencePanesDirectory | The PreferencePanes directory for use with System Preferences (Library/PreferencePanes). | /Users/hogeuser/Library/PreferencePanes |
applicationScriptsDirectory | The user scripts folder for the calling application (~/Library/Application Scripts/<code-signing-id>. | /Users/hogeuser/Library/Application Scripts/com.apple.dt.Xcode.PlaygroundStub-macosx |
itemReplacementDirectory | The constant used to create a temporary directory. | (nil) |
allApplicationsDirectory | All directories where applications can be stored. | /Users/hogeuser/Applications /Users/hogeuser/Applications/Utilities /Users/hogeuser/Developer/Applications /Users/hogeuser/Applications/Demos |
allLibrariesDirectory | All directories where resources can be stored. | /Users/hogeuser/Library /Users/hogeuser/Developer |
trashDirectory | The trash directory. | /Users/hogeuser/.Trash |
Code
import Cocoa struct Directory { var directory: FileManager.SearchPathDirectory var name: String var detail: String var commonDirectoryURLs: [URL] { let urls = FileManager.default.urls(for: directory, in: .userDomainMask) return urls } var descriptionForMarkdown: String { var message = "|\(name)|\(detail)" let urls = self.commonDirectoryURLs if urls.isEmpty { message += "|(nil)" } for (index, url) in urls.enumerated() { if index == 0 { message += "|\(url.path)" } else { message += "<br>\(url.path)" } } message += "|" return message } } extension Directory { // ref: [FileManager\.SearchPathDirectory](https://developer.apple.com/documentation/foundation/filemanager/searchpathdirectory) // 2022/07/14 static let allDirectories = [ Directory(directory: .applicationDirectory, name: "applicationDirectory", detail: "Supported applications (/Applications)."), Directory(directory: .demoApplicationDirectory, name: "demoApplicationDirectory", detail: "Unsupported applications and demonstration versions."), Directory(directory: .developerApplicationDirectory, name: "developerApplicationDirectory", detail: "Developer applications (/Developer/Applications)."), Directory(directory: .adminApplicationDirectory, name: "adminApplicationDirectory", detail: "System and network administration applications."), Directory(directory: .libraryDirectory, name: "libraryDirectory", detail: "Various user-visible documentation, support, and configuration files (/Library)."), Directory(directory: .developerDirectory, name: "developerDirectory", detail: "Developer resources (/Developer)."), Directory(directory: .userDirectory, name: "userDirectory", detail: "User home directories (/Users)."), Directory(directory: .documentationDirectory, name: "documentationDirectory", detail: "Documentation."), Directory(directory: .documentDirectory, name: "documentDirectory", detail: "Document directory."), Directory(directory: .coreServiceDirectory, name: "coreServiceDirectory", detail: "Core services (System/Library/CoreServices)."), Directory(directory: .autosavedInformationDirectory, name: "autosavedInformationDirectory", detail: "The user’s autosaved documents (Library/Autosave Information)."), Directory(directory: .desktopDirectory, name: "desktopDirectory", detail: "The user’s desktop directory."), Directory(directory: .cachesDirectory, name: "cachesDirectory", detail: "Discardable cache files (Library/Caches)."), Directory(directory: .applicationSupportDirectory, name: "applicationSupportDirectory", detail: "Application support files (Library/Application Support)."), Directory(directory: .downloadsDirectory, name: "downloadsDirectory", detail: "The user’s downloads directory."), Directory(directory: .inputMethodsDirectory, name: "inputMethodsDirectory", detail: "Input Methods (Library/Input Methods)."), Directory(directory: .moviesDirectory, name: "moviesDirectory", detail: "The user’s Movies directory (~/Movies)."), Directory(directory: .musicDirectory, name: "musicDirectory", detail: "The user’s Music directory (~/Music)."), Directory(directory: .picturesDirectory, name: "picturesDirectory", detail: "The user’s Pictures directory (~/Pictures)."), Directory(directory: .printerDescriptionDirectory, name: "printerDescriptionDirectory", detail: "The system’s PPDs directory (Library/Printers/PPDs)."), Directory(directory: .sharedPublicDirectory, name: "sharedPublicDirectory", detail: "The user’s Public sharing directory (~/Public)."), Directory(directory: .preferencePanesDirectory, name: "preferencePanesDirectory", detail: "The PreferencePanes directory for use with System Preferences (Library/PreferencePanes)."), Directory(directory: .applicationScriptsDirectory, name: "applicationScriptsDirectory", detail: "The user scripts folder for the calling application (~/Library/Application Scripts/<code-signing-id>."), Directory(directory: .itemReplacementDirectory, name: "itemReplacementDirectory", detail: "The constant used to create a temporary directory."), Directory(directory: .allApplicationsDirectory, name: "allApplicationsDirectory", detail: "All directories where applications can be stored."), Directory(directory: .allLibrariesDirectory, name: "allLibrariesDirectory", detail: "All directories where resources can be stored."), Directory(directory: .trashDirectory, name: "trashDirectory", detail: "The trash directory."), ] } print(""" |FileManager.SearchPathDirectory|Detail|Paths| |---|---|---| """) for directory in Directory.allDirectories { print(directory.descriptionForMarkdown) }