在 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 中创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 编程中在 Swift 中创建实体文件?

无法在 Swift 中创建文件路径

Swift如何在临时文件夹中创建复杂的文件夹结构

使用在另一个 Swift VC 文件中创建的对象?

在 Swift 3 中创建具有自定义大小的 VideoPlayer

如何在 iOS swift 3 中创建单独的文件夹