我想在文件的开头和结尾添加一个字符串。
我要像这样在末尾附加一个字符串,
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行文本。任何帮助,将不胜感激。
答案 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()
}
}
使用此步骤,可以通过以下步骤解决您的问题: