gpt4 book ai didi

swift - 在 Swift 中将文本或数据 append 到文本文件

转载 作者:行者123 更新时间:2023-11-30 13:49:27 26 4
gpt4 key购买 nike

我已经读过Read and write data from text file

我需要将数据(字符串) append 到文本文件的末尾。
一种明显的方法是从磁盘读取文件并将字符串 append 到文件末尾并将其写回,但效率不高,特别是当您处理大文件并经常执行时。

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

到目前为止我已经:

    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)")
}

最佳答案

这是 PointZeroTwo 在 Swift 3.0 中的答案的更新,有一个简短的说明 - 在 Playground 测试中使用简单的文件路径有效,但在我的实际应用程序中,我需要使用 .documentDirectory (或您选择的任何目录)构建 URL用于阅读和写作 - 确保它在整个应用程序中保持一致):

extension String {
func appendLineToURL(fileURL: URL) throws {
try (self + "\n").appendToURL(fileURL: fileURL)
}

func appendToURL(fileURL: URL) throws {
let data = self.data(using: String.Encoding.utf8)!
try data.append(fileURL: fileURL)
}
}

extension Data {
func append(fileURL: URL) throws {
if let fileHandle = FileHandle(forWritingAtPath: fileURL.path) {
defer {
fileHandle.closeFile()
}
fileHandle.seekToEndOfFile()
fileHandle.write(self)
}
else {
try write(to: fileURL, options: .atomic)
}
}
}
//test
do {
let dir: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last! as URL
let url = dir.appendingPathComponent("logFile.txt")
try "Test \(Date())".appendLineToURL(fileURL: url as URL)
let result = try String(contentsOf: url as URL, encoding: String.Encoding.utf8)
}
catch {
print("Could not write to file")
}

感谢 PointZeroTwo。

关于swift - 在 Swift 中将文本或数据 append 到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477426/

26 4 0
文章推荐: ios - 根据条件设置rootViewController
文章推荐: ios - swift (IOS): Saving and Reading Data into/from a file
文章推荐: swift - 使用 Realm 关系列表 UITableView