【发布时间】:2019-06-04 10:09:30
【问题描述】:
我正在实现一个小型记录器,我正在其中写入一个 TXT 文件。 我希望最后一个事件位于文件的顶部,但我无法让它工作。网上所有的例子都是用“fileHandle.seekToEndOfFile()”写在文件末尾的。
这就是我所拥有的:
private static func writeToFile(text: String) {
guard let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first else { return }
guard let writePath = NSURL(fileURLWithPath: path).appendingPathComponent(Logger.folderName) else { return }
let fileManager = FileManager.default
try? fileManager.createDirectory(atPath: writePath.path, withIntermediateDirectories: true)
let file = writePath.appendingPathComponent(Logger.fileName)
if !fileManager.fileExists(atPath: file.path) {
do {
try "".write(toFile: file.path, atomically: true, encoding: String.Encoding.utf8)
} catch _ {
}
}
let msgWithLine = text + "\n"
do {
let fileHandle = try FileHandle(forWritingTo: file)
//fileHandle.seekToEndOfFile()
fileHandle.write(msgWithLine.data(using: .utf8)!)
fileHandle.closeFile()
} catch {
print("Error writing to file \(error)")
}
}
使用这段代码,我写在第一行,但是,我总是重写第一行的内容。
如何将其更改为第一个被带到下面一行然后在第一行写入新内容的内容?
谢谢!!
【问题讨论】:
-
fileHandle.seek(toFileOffset: 0) 代替 fileHandle.seekToEndOfFile() 怎么样
-
为什么需要这种方式,正常的解决方法是在文件末尾追加?
-
@JoakimDanielson 我在一个应用程序内部有一个小的记录器视图,并且在最近的事件上显示是有意义的。我看到了 m1sh0 的解决方案,我看到它会很重。我会按照 m1sh0 的建议在文本文件上正常写入,然后恢复何时显示。
-
这听起来是最好的解决方案!
标签: ios swift text-files filehandle