亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Swift中將文本或數據添加到文本文件

在Swift中將文本或數據添加到文本文件

叮當貓咪 2019-12-03 14:22:05
我需要將數據(字符串)附加到文本文件的末尾。一種顯而易見的方法是從磁盤讀取文件,并將字符串附加到文件末尾再寫回,但這種方法效率不高,尤其是在處理大型文件并經常處理的情況下。因此,問題是“如何在不讀取文件并將整個內容寫回的情況下,將字符串附加到文本文件的末尾”?到目前為止,我有:    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, encoding: NSUTF8StringEncoding, error: &err)    }else {        "\(NSDate()) -> \(object)".writeToURL(fileurl, atomically: true, encoding: NSUTF8StringEncoding, error: &err)    }    if err != nil{        println("CANNOT LOG: \(err)")    }
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

這是Swift 2的版本,使用String和NSData的擴展方法。


//: Playground - noun: a place where people can play


import UIKit


extension String {

    func appendLineToURL(fileURL: NSURL) throws {

        try self.stringByAppendingString("\n").appendToURL(fileURL)

    }


    func appendToURL(fileURL: NSURL) throws {

        let data = self.dataUsingEncoding(NSUTF8StringEncoding)!

        try data.appendToURL(fileURL)

    }

}


extension NSData {

    func appendToURL(fileURL: NSURL) throws {

        if let fileHandle = try? NSFileHandle(forWritingToURL: fileURL) {

            defer {

                fileHandle.closeFile()

            }

            fileHandle.seekToEndOfFile()

            fileHandle.writeData(self)

        }

        else {

            try writeToURL(fileURL, options: .DataWritingAtomic)

        }

    }

}


// Test

do {

    let url = NSURL(fileURLWithPath: "test.log")

    try "Test \(NSDate())".appendLineToURL(url)

    let result = try String(contentsOfURL: url)

}

catch {

    print("Could not write to file")

}


查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 1345 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號