如何在Swift中打开文件?

时间:2014-06-10 23:46:23

标签: file io swift

我还没有看到Swift标准库的文档,我期望找到类似File类或带有用于打开,读取和写入文件的接口的结构。你期望File IO的所有常用内容。有没有,或者是依赖于NSFileManager及其同类?

5 个答案:

答案 0 :(得分:12)

如果文件在你的iOS项目中,希望这是一种方法(希望这是你的情况):

var filePath = NSBundle.mainBundle().pathForResource("theFile", ofType:"txt")
var data     = NSData(contentsOfFile:filePath)

答案 1 :(得分:5)

如果你只需要将文件的内容读成字符串,那么Swift 2.0的方法就是:

do {
    var dictionary = try String(contentsOfFile: "/usr/share/dict/words", encoding: NSUTF8StringEncoding)
} catch {

}

否则,上面提到的涉及的方法越多越好。

答案 2 :(得分:4)

通常在应用中,您将使用UIDocument和其他iCloud链接的方式保存文件,但在Swift博客Apple uses examples based on C and POSIX中用于打开和保存文件。所以他们有一个例子:

let fd = open("/tmp/scratch.txt", O_WRONLY|O_CREAT, 0o666)

if fd < 0 {
    perror("could not open /tmp/scratch.txt")
} else {
    let text = "Hello World"
    write(fd, text, text.characters.count)
    close(fd)
}

它看起来非常像Swift,但是你是否想要在Cocoa框架之上使用它,我不知道。

答案 3 :(得分:4)

Swift标准库不包含此功能。标准库主要包含数据结构,低级类型和调用,以及半内置语言功能;超出print()readLine()的I / O被视为超出范围。我也不希望在不久的将来这种情况发生变化。

但是,Foundation包含文件I / O调用,并且Swift Corelibs项目正在努力在纯Swift中重新实现Foundation,因此它可以在Swift的任何地方使用。每个主要操作系统上可用的POSIX I / O调用也可以在Swift中使用,尽管它们使用起来非常笨拙。

答案 4 :(得分:1)

我认为目前唯一有效的答案是:没有基于Swift的文件/ IO库,因此您现在必须使用基于Objective-C的Foundation类。正如@BryanChen所说,也许可以在一年后回来找一个更加充实的Swift标准库。