如何在Swift中打开文件?

the*_*ory 15 io file swift

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

Jea*_*nan 15

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

var filePath = Bundle.main.path(forResource: "theFile", ofType: "txt")
var data     = Data(contentsOf: URL(fileURLWithPath: filePath))
Run Code Online (Sandbox Code Playgroud)


小智 6

如果你只需要将文件的内容读入一个字符串,Swift 2.0方法就是这样:

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

}
Run Code Online (Sandbox Code Playgroud)

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


ske*_*ech 5

通常在应用程序中,您将使用UIDocument和其他iCloud链接的文件保存方式,但是在Swift博客中,Apple使用基于C和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)
}
Run Code Online (Sandbox Code Playgroud)

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


Bre*_*don 5

Swift 标准库不包含此功能。标准库主要包含数据结构、低级类型和调用、半内置语言特性;I / O超越print()readLine()被认为的范围了。我也不认为这会在不久的将来改变。

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