Объединить / Добавить два файла - PullRequest
0 голосов
/ 04 июля 2018

У меня есть два файла: Файл1 и Файл2. Я хочу добавить File2 в конце File1.

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

Я использовал эту функцию, чтобы добавить строку в конец файла. Я не нашел ничего, чтобы добавить файл в конце. Может ли кто-нибудь помочь мне, если я что-то упустил.

1 Ответ

0 голосов
/ 04 июля 2018

Как говорит 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)

(Пропуск обработки ошибок, закрытие файла и т. Д.)

...