概要
- アプリから何かしらのファイルを保存したい場合、フォルダのパスの取得に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 {
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)
}