我想将JSON文本(如String
)存储在一个文本文件中,或者更确切地说,每当有新的数据要添加时就追加。但是,以下代码始终返回-1作为output.write()
的返回代码。我做错了什么,但我不知道:
let fileURL = (try! FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask)).first!.appendingPathComponent("data.json")
let json = "..."
let tenGB = 10 * 1000 * 1000 * 1000
if let output = OutputStream(url: fileURL, append: true) {
output.open()
let bytes = output.write(json, maxLength: tenGB)
if bytes < 0 {
print("Failure writing to disk")
} else if bytes == 0 {
print("Failure writing to disk (capacity)")
} else {
print("\(bytes) bytes written to disk")
}
output.close()
} else {
print("Unable to open file")
}
我不希望数据是10gb,更多的是kB-MB,但是我想我会给它一个很大的值。
streamError
的输出:Error Domain=NSPOSIXErrorDomain Code=22 "Invalid argument" UserInfo={_kCFStreamErrorCodeKey=22, _kCFStreamErrorDomainKey=1}
最佳答案
正如我们在评论中了解到的,问题来自10GB
您需要的是在数据大小切换行时写入数据:
let bytes = output.write(json, maxLength: tenGB)
具有
bytes = output.write(json, maxLength: json.utf8.count)
你需要在那之后附加数据,看这个问题做类似的事情question