Добавить новую строку в текстовый файл в Swift 2
Раньше я делал кодирование в Java, но теперь я хочу переместить свое приложение на iOS с помощью swift 2. Поэтому я хочу, чтобы метод добавлял текст в новой строке в существующий текстовый файл в документах приложения.
Я искал и пробовал так много методов, но все перезаписывается в новый текстовый файл
В Java я использовал этот метод
PrintWriter out=null;
try {
out=new PrintWriter(new FileWriter("file.txt",true));
out.println("some txt"}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
2 ответа
Решение
Я думаю, что вы должны использовать NSFileHandle:
let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL
let fileurl = dir.URLByAppendingPathComponent("file.txt")
let string = "\(NSDate())\n"
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) {
var error:NSError?
if let fileHandle = NSFileHandle(forWritingToURL: fileurl, error: &error) {
fileHandle.seekToEndOfFile()
fileHandle.writeData(data)
fileHandle.closeFile()
}
else {
println("Can't open fileHandle \(error)")
}
}
else {
var error:NSError?
if !data.writeToURL(fileurl, options: .DataWritingAtomic, error: &error) {
println("Can't write \(error)")
}
}
Вы можете использовать метод ниже, чтобы добавить строку в файл
func writeToFile(content: String, fileName: String) {
let contentToAppend = content+"\n"
let filePath = NSHomeDirectory() + "/Documents/" + fileName
//Check if file exists
if let fileHandle = NSFileHandle(forWritingAtPath: filePath) {
//Append to file
fileHandle.seekToEndOfFile()
fileHandle.writeData(contentToAppend.dataUsingEncoding(NSUTF8StringEncoding)!)
}
else {
//Create new file
do {
try contentToAppend.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding)
} catch {
print("Error creating \(filePath)")
}
}
}