2016-04-20 68 views
1

我曾经在java中编写代码,但现在我想用swift 2将我的应用程序移动到iOS。所以我想要一个方法将新行中的文本追加到现有的txt文件在应用文档中。在swift 2中追加新字符串到txt文件

我搜索并尝试了许多方法,但它的所有覆盖到新的txt文件

在java中我用这个方法

PrintWriter out=null; 
     try { 
      out=new PrintWriter(new FileWriter("file.txt",true)); 

        out.println("some txt"} 


       out.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

回答

5

我认为你必须使用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)") 
     } 
    } 
10

您可以使用下面的方法追加字符串到文件

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