写入日志文件似乎会覆盖以前的保存

时间:2016-01-07 03:11:41

标签: swift logging writetofile

作为练习,我正在尝试编写一个将字符串记录到文本文件的日志记录类。我有我的应用程序来写入和读取文件。但是,如果我尝试多次登录,它似乎只能获取最新的日志。

尝试

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()

输出:

  

来自日志:
   实例一再写入

1 个答案:

答案 0 :(得分:2)

Foundation 提供的writeToFile(_:atomically:encoding:)方法替换了给定文件的内容。 附加到文件有几种方法: