我还没有看到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)
否则,上面提到的涉及的方法越多越好.
通常在应用程序中,您将使用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框架之上使用它。
Swift 标准库不包含此功能。标准库主要包含数据结构、低级类型和调用、半内置语言特性;I / O超越print()和readLine()被认为的范围了。我也不认为这会在不久的将来改变。
但是,Foundation 包含文件 I/O 调用,并且 Swift Corelibs 项目正在努力用纯 Swift 重新实现 Foundation,因此它可以在 Swift 的任何地方使用。在每个主要操作系统上可用的 POSIX I/O 调用在 Swift 中也可用,尽管它们使用起来要笨拙得多。