Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 合并/附加两个文件_Swift_Filehandler - Fatal编程技术网

Swift 合并/附加两个文件

Swift 合并/附加两个文件,swift,filehandler,Swift,Filehandler,我有两个文件,File1和File2。我想在File1的末尾追加File2 func writeToFile(content: String, fileName: String) { let contentToAppend = content+"\n" let filePath = NSHomeDirectory() + "/Documents/" + fileName //Check if file exists if let fileHandle = Fi

我有两个文件,File1和File2。我想在File1的末尾追加File2

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

我使用这个函数在文件末尾添加字符串。最后我没有找到任何要追加文件的内容。如果我遗漏了什么,有人能帮我吗。

正如rmaddy所说,您使用了错误的代码来获取文档目录。为此,您应该使用如下代码:

guard let docsURL =  try? FileManager.default.url(for: .documentDirectory, 
                 in: .userDomainMask, 
                 appropriateFor: nil, 
                 create: true else { return }
然后,您需要代码来读取要追加的文件,并使用write来追加该文件:

let fileURL = docsURL.appendingPathComponent(fileName)

let urlToAppend = docsURL.appendingPathComponent(fileNameToAppend)

guard let dataToAppend = try ? Data.contentsOf(url: urlToAppend) else { return }

guard let fileHandle = FileHandle(forWritingTo: fileURL) else { return }

fileHandle.seekToEndOfFile()

fileHandle.write(dataToAppend)

(跳过错误处理、关闭文件等)

如何检查未附加任何内容?当你一行一行地浏览代码时,你看到了什么;这些都是正确的,不是错误吗?调用
synchronizeFile
closeFile
后,您看到了什么?获取
文档
文件夹路径的逻辑错误。但使用文件句柄可能是我附加到现有文件的方式。如果我只附加一个字符串,它就可以正常工作。但我不知道当我想将一个文件附加到另一个文件时需要更改什么。