加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift中将文本或数据附加到文本文件

发布时间:2020-12-14 05:37:24 所属栏目:百科 来源:网络整理
导读:我已经读了 Read and write data from text file 我需要将数据(一个字符串)附加到我的文本文件的末尾. 一个明显的方法是从磁盘读取文件,并将字符串附加到其末尾并将其写回来,但是效率不高,尤其是在处理大文件并经常执行时. 所以问题是“如何将字符串附加到文
我已经读了 Read and write data from text file

我需要将数据(一个字符串)附加到我的文本文件的末尾.
一个明显的方法是从磁盘读取文件,并将字符串附加到其末尾并将其写回来,但是效率不高,尤其是在处理大文件并经常执行时.

所以问题是“如何将字符串附加到文本文件的末尾,而不读取文件并写回整个事物”?

到目前为止我有:

let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory,inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL
    let fileurl =  dir.URLByAppendingPathComponent("log.txt")
    var err:NSError?
    // until we find a way to append stuff to files
    if let current_content_of_file = NSString(contentsOfURL: fileurl,encoding: NSUTF8StringEncoding,error: &err) {
        "(current_content_of_file)n(NSDate()) -> (object)".writeToURL(fileurl,atomically: true,error: &err)
    }else {
        "(NSDate()) -> (object)".writeToURL(fileurl,error: &err)
    }
    if err != nil{
        println("CANNOT LOG: (err)")
    }
你应该使用NSFileHandle,它可以是 seek to the end of the file
let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory,inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL
let fileurl =  dir.URLByAppendingPathComponent("log.txt")

let string = "(NSDate())n"
let data = string.dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion: false)!

if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) {
    var err:NSError?
    if let fileHandle = NSFileHandle(forWritingToURL: fileurl,error: &err) {
        fileHandle.seekToEndOfFile()
        fileHandle.writeData(data)
        fileHandle.closeFile()
    }
    else {
        println("Can't open fileHandle (err)")
    }
}
else {
    var err:NSError?
    if !data.writeToURL(fileurl,options: .DataWritingAtomic,error: &err) {
        println("Can't write (err)")
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读