将字符串添加到文件顶部



我想在文件的开头和结尾添加一个字符串。

我在末尾附加一个字符串,如下所示,

func writeToFile(content: String, fileName: String) {
let contentToAppend = content+"n"
let filePath = NSHomeDirectory() + "/Documents/" + fileName
//Check if file exists
if let fileHandle = FileHandle(forWritingAtPath: filePath) {
//Append to file
fileHandle.seekToEndOfFile()
fileHandle.write(contentToAppend.data(using: String.Encoding.utf8)!)
}
else {
//Create new file
do {
try contentToAppend.write(toFile: filePath, atomically: true, encoding: String.Encoding.utf8)
} catch {
print("Error creating (filePath)")
}
}
}

我尝试fileHandle.seek(toFileOffset: 0)但它从文件中删除了我的第一行。我想在文件的开头添加 2 行文本。任何帮助将不胜感激。

不能使用文件句柄将数据插入到现有文件中。它仅支持覆盖全部或部分文件或追加到文件末尾。

您需要创建一个新文件,方法是首先在开头写入所需的字符串,然后写入现有文件的内容,然后在末尾写入所需的字符串。

下面是可用于将现有文件的内容添加到文件句柄的扩展名。假设文件句柄已设置为写入。

extension FileManager {
func appendContentsOfFile(at fileURL: URL, to outputHandle: FileHandle) throws {
let inputHandle = try FileHandle(forReadingFrom: fileURL)
while true {
let data = inputHandle.readData(ofLength: 4096)
if data.isEmpty {
break
} else {
outputHandle.write(data)
}
}
inputHandle.closeFile()
}
}

使用此功能,可以通过以下步骤解决您的问题:

  1. 创建用于写入新文件的文件处理程序。
  2. 写入起始字符串的数据。
  3. 调用FileManager.default.appendContentOfFile(at: someFileURL, to: yourFileHandle(以添加现有文件。
  4. 写入结束字符串的数据。
  5. 合上手柄。
  6. (可选(删除旧文件,重命名新文件。

最新更新