写入日志文件似乎覆盖了以前的保存
Writing to log file seems to overwrite previous save
作为练习,我尝试编写一个日志记录 class,将字符串记录到文本文件中。我有我的应用程序可以写入和读取文件。但是,如果我尝试多次登录,它似乎只会获取最新的日志。
尝试
写作
private let file = "logfile.txt"
func write(text: String) {
let path = getDocumentsDirectory()
do {
try text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding)
}
catch let error {
print("error: \n \(error)")
}
}
阅读
func read() {
let path = getDocumentsDirectory()
do {
let text2 = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding)
print("From Log: \n \(text2)")
}
catch let error {
print("error: \n \(error)")
}
}
func getDocumentsDirectory() -> String {
guard let dir : NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first else {
return ""
}
let documentsDirectory : String = dir.stringByAppendingPathComponent(file)
return documentsDirectory
}
结果
当我尝试读取我的文件时,我只保存了最后一行。
问题
如果我的目标是无休止地将新日志附加到文件,并批量读取日志文件。我需要对我的代码进行哪些更改?
更多详情:
我正在加载应用程序时写入文件:
Logger.shared.write("instance one writes")
Logger.shared.write("instance one writes again")
Logger.shared.write("instance one writes yet again")
然后尝试阅读:
Logger.shared.read()
输出:
From Log:
instance one writes yet again
基金会提供的writeToFile(_:atomically:encoding:)
方法替换给定文件的内容。 附加到文件有几种方法:
NSOutputStream,如NSOutputStream(toFileAtPath: mypath, append: true)
, using stream.write(bytes, len)
写入数据
也许最简单,NSFileHandle,如NSFileHandle(forWritingAtPath: mypath)
, using seekToEndOfFile()
and writeData()
.
作为练习,我尝试编写一个日志记录 class,将字符串记录到文本文件中。我有我的应用程序可以写入和读取文件。但是,如果我尝试多次登录,它似乎只会获取最新的日志。
尝试
写作
private let file = "logfile.txt"
func write(text: String) {
let path = getDocumentsDirectory()
do {
try text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding)
}
catch let error {
print("error: \n \(error)")
}
}
阅读
func read() {
let path = getDocumentsDirectory()
do {
let text2 = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding)
print("From Log: \n \(text2)")
}
catch let error {
print("error: \n \(error)")
}
}
func getDocumentsDirectory() -> String {
guard let dir : NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first else {
return ""
}
let documentsDirectory : String = dir.stringByAppendingPathComponent(file)
return documentsDirectory
}
结果
当我尝试读取我的文件时,我只保存了最后一行。
问题
如果我的目标是无休止地将新日志附加到文件,并批量读取日志文件。我需要对我的代码进行哪些更改?
更多详情:
我正在加载应用程序时写入文件:
Logger.shared.write("instance one writes")
Logger.shared.write("instance one writes again")
Logger.shared.write("instance one writes yet again")
然后尝试阅读:
Logger.shared.read()
输出:
From Log:
instance one writes yet again
基金会提供的writeToFile(_:atomically:encoding:)
方法替换给定文件的内容。 附加到文件有几种方法:
NSOutputStream,如
NSOutputStream(toFileAtPath: mypath, append: true)
, usingstream.write(bytes, len)
写入数据也许最简单,NSFileHandle,如
NSFileHandle(forWritingAtPath: mypath)
, usingseekToEndOfFile()
andwriteData()
.