繁体   English   中英

NSFileHandle updateatPath如何更新文件而不是覆盖?

[英]NSFileHandle updateatPath how can i update file instead of overwriting?

我试图创建文件并通过在每次单击保存按钮时在结尾处添加字符串来更新文件。 但是,每次我点击保存时,它都会使用最新的字符串创建一个新文件(覆盖)。 我的代码在下面,我该如何解决? 请帮忙!

func pathToDocsFolder() -> String {

    let pathToDocumentsFolder =NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString

    return pathToDocumentsFolder.stringByAppendingPathComponent("/log.csv")
}  

@IBAction func saveSample(sender: AnyObject) {

    let string = LabelText + ";" + SampleNoOne.text! + ";" + fromOne.text! + ";" + toOne.text! + ";" + casingBlowsOne.text! + ";"

    let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

    let filemanager = NSFileManager.defaultManager()


    if filemanager.fileExistsAtPath(pathToDocsFolder()){
        filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil)
    }


    let fileHandle = NSFileHandle.init(forUpdatingAtPath: pathToDocsFolder())

    fileHandle!.seekToEndOfFile()
    fileHandle!.writeData(data)
    fileHandle!.closeFile()

更新:

if filemanager.fileExistsAtPath(pathToDocsFolder()){
     filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil)
}

至:

if filemanager.fileExistsAtPath(pathToDocsFolder()) == false {
        filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil)
    }

如要在文件中追加,请使用“ forWritingAtPath”而不是“ forUpdatingAtPath”。替换以下行:

let fileHandle = NSFileHandle.init(forUpdatingAtPath: pathToDocsFolder())

let fileHandle = NSFileHandle.init(forWritingAtPath: pathToDocsFolder())

还要确保检查现有文件的条件正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM