在 Swift 中创建文件夹
Posted
技术标签:
【中文标题】在 Swift 中创建文件夹【英文标题】:Create Folder in Swift 【发布时间】:2015-01-03 09:35:03 【问题描述】:我是 swift 新手,不知道如何从字符串路径(或某种 File/ NSFile
对象)创建新文件夹
这是在带有 Cocoa 的 OS X 上。
【问题讨论】:
【参考方案1】:我的理解是您正在尝试使用 swift 以编程方式创建目录。下面给出的代码也是如此。
var err: NSErrorPointer = nil
let manager = NSFileManager.defaultManager()
manager.createDirectoryAtPath("/Users/abc/Desktop/swiftDir", withIntermediateDirectories: true, attributes: nil, error: err)
【讨论】:
如果用户不叫“abc”怎么办?如果用户在网络上运行并且他的文件系统的位置完全不同,该怎么办。不要对用户的文件系统做出假设,而是使用工具来询问特殊目录的位置。 这是一个完全有效的 sn-p,它回答了 OP 的问题。如果示例路径是“/foo/bar/baz”会更好吗? 无论如何,您都可以使用NSHomeDirectory()
获取主目录。
你也可以用'~',不是吗?【参考方案2】:
Xcode 8 • Swift 3
extension FileManager.SearchPathDirectory
func createSubFolder(named: String, withIntermediateDirectories: Bool = false) -> Bool
guard let url = FileManager.default.urls(for: self, in: .userDomainMask).first else return false
do
try FileManager.default.createDirectory(at: url.appendingPathComponent(named), withIntermediateDirectories: withIntermediateDirectories, attributes: nil)
return true
catch
print(error)
return false
用法:
if FileManager.SearchPathDirectory.desktopDirectory.createSubFolder(named: "untitled folder")
print("folder successfully created")
SearchPathDirectory
【讨论】:
我会使用first
,而不是直接使用下标[0]
访问第一个对象。一个返回一个可选值,另一个在数组为空时导致运行时错误。【参考方案3】:
在 Swift 2.0 中,您必须使用新样式进行错误处理:
let path: String = "/Users/abc/Desktop/swiftDir"
let fileManager = NSFileManager.defaultManager()
do
try fileManager.createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil)
catch let error as NSError
print("Error while creating a folder.")
【讨论】:
嗨 JavaNut。我知道在这种情况下终结符不是必需的,但是打印语法是另外一回事,在 swift 2.0 中发生了变化:我的意图是显示 print("Error while creating a folder.", terminator: "\n" ) 是 print 命令的新语法,如果您不提供终止符,则会在文本之后打印一个新行。所以有人可以学习以完整的语法显示它。上面的 print 命令在 Swift 1 和 Swift 2 中有不同的含义。我想避免混淆。以上是关于在 Swift 中创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章