我正在尝试使用Documents目录中的文件读取/写入一些JSON数据。我使用:
编写文件func WriteJSonToFile(fileName : String, buffer : String) -> Bool
{
let filePath = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(fileName)
do {
try buffer.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding);
return true
}
catch let error as NSError {
print(error.localizedDescription)
}
return false
}
这很好用,我可以在文本编辑器中打开文件。然后我转过身来尝试阅读:
func ReadJSonFromFile(fileName : String) ->String
{
let filePath = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(fileName)
do {
let databuffer = try String(contentsOfFile: filePath, encoding: NSUTF8StringEncoding)
return databuffer
}
catch let error as NSError {
print(error.localizedDescription)
}
return ""
}
在阅读时,我总是收到错误:
The file “authdata.dat” couldn’t be opened using text encoding Unicode (UTF-8).
但是,我使用Unicode(UTF-8)编写文件,那么为什么我不能使用完全相同的编码读取文件?这让我非常奇怪。任何人都可以提供洞察力或解决方案吗?谢谢!
答案 0 :(得分:1)
试试这个:
var readError:NSError?
if let data = NSData(contentsOfFile:filePath!, options:NSDataReadingOptions.DataReadingUncached, error:&readError) {
let stringData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("data read: \(stringData)")
}
作为旁注 - 为什么不用扩展名.json
而不是.dat
保存文件。