为什么删除的文件会在新写入文件后返回? Swift 2.0

时间:2016-06-13 18:34:03

标签: ios swift

我正在swift中编写一个应用程序,将传感器数据记录到txt文件中。当我发生需要记录的事件时,我创建了文件名

    func createNewLogFile (){

    // Create a new file name
    currentFileName = "log\(NSDate()).txt"    
    //get the path
    let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)

    //create the file
    _ = paths[0].URLByAppendingPathComponent(currentFileName)

}

创建文件后,我将数据写入新文件,如下所示:

 func writeData (data: String){

    // get the path to document directory
    let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
    let filePath = paths[0].URLByAppendingPathComponent(currentFileName)


    //get the data to be logged
    let stringLocation  = data
    let stringData = stringLocation.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!


    //look to see if the file exist
    if NSFileManager.defaultManager().fileExistsAtPath(filePath.path!) {
        do {

            //seek to the end of the file to append data
            let fileHandle = try NSFileHandle(forWritingToURL: filePath)
            fileHandle.seekToEndOfFile()
            fileHandle.writeData(stringData)
            fileHandle.closeFile()


        } catch {

            print("Can't open fileHandle \(error)")

        }
    } else {

        do {

            // write to new file
            try stringData.writeToURL(filePath, options: .DataWritingAtomic)

        } catch {

            print("Can't write to new file \(error)")
        }
    }

}

当我删除文件时(来自不同的ViewController或同样的,我试过两个)

我称之为DeleteAllFiles

func deleteAllFiles (Extension: String){


    let dirs = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
    let dir = dirs[0]

    do {
        let fileList = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(dir, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions())
        //return fileList as [String]

        for elements in fileList{
            do{
                try NSFileManager.defaultManager().removeItemAtURL(elements)

                print("old Files has been removed")
            } catch let error as NSError {
                print(error.localizedDescription)
            }

        }

    }catch let error as NSError {
        print(error.localizedDescription)
    }

}

然后我刷新列表并且文件似乎消失了。(即使我在视图之间来回移动)但是,当我写一个新文件并刷新列表时,文件又回来了新文件。

当我使用共享文件功能从iTunes中删除它们时,甚至会发生这种情况。 有关为什么会发生这种情况的任何想法?我没有收到任何有用的错误消息。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。 当我创建文件时,我实际上只是想创建文件名。目前没有理由实际创建该文件。我写信的时候正在创建实际的文件。

func createNewLogFile (){

    // Create a new file name
    currentFileName = "log\(NSDate()).txt" 

    //Removed creating actual file code   

}