我已经读过从文本文件中读取和写入数据
我需要将数据(字符串)附加到我的文本文件的末尾.
一种显而易见的方法是从磁盘读取文件并将字符串附加到它的末尾并将其写回,但效率不高,尤其是在处理大文件并经常进行时.
所以问题是"如何将字符串附加到文本文件的末尾,而不读取文件并将整个内容写回来"?
到目前为止我有:
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)")
}
Run Code Online (Sandbox Code Playgroud) 基本上,我试图用Swift 3做到这一点:
write a titleString to file
For i=1 to n
newString = createNewString() //these may look like "1: a, b, c"
append each new string to end of file
next i
Run Code Online (Sandbox Code Playgroud)
这是我做的:
let fileURL = URL(fileURLWithPath: completePath)
let titleString = "Line, Item 1, Item 2, Item 3"
var dataString: String
let list1 = [1, 2, 3, 4, 5]
let list2 = ["a", "b", "c", "d", "e"]
let list3 = ["p", "q", "r", "s", "t"]
for i in 0...4 { …Run Code Online (Sandbox Code Playgroud)