Добавить один файл в другой файл

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

Мои файлы .sgm, В своем коде я сначала беру все файлы sgm, затем проверяю, заканчивается ли этот файл _Ch#.

Я готов добавить файл к мастеру, но пока все, что я смог сделать, это добавить текст строки имени файла в конец мастера.

Ваша помощь очень ценится. Максимум

Public Class Form1
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
    Dim searchDir As String = txtSGMFile.Text 'input field for user
    'Get all the sgm files in the directory specified
    Dim fndFiles = Directory.GetFiles(searchDir, "*.sgm")
    'Set up the regular expression you will make as the condition for the file
    Dim rx = New Regex(".*_Ch\d\.sgm")
    Dim ch1 = New Regex(".*_Ch[1]\.sgm")
    Dim existingFile = searchDir & "\Bld1_Master_Document.sgm"


    'Loop through each file found by the REGEX
    For Each file In fndFiles
        If rx.IsMatch(file) Then
            If ch1.IsMatch(file) Then
                Dim result = Path.GetFileName(file)
                Dim fileToCopy = searchDir & "\" & result

                'THIS IS WHERE I WANT TO APPEND fileToCopy INTO existingFile
                System.IO.File.AppendAllText(fileToCopy, existingFile)


                MessageBox.Show("File Copied")
            End If
            'MsgBox(file)
        End If
    Next file
    Close()
End Sub

2 ответа

Решение

Вы можете прочитать содержимое файла в строку и затем использовать AppendAllText следующим образом:

Imports System.IO
' ...

Dim fileToCopy = Path.Combine(searchDir, result)

'THIS IS WHERE I WANT TO APPEND fileToCopy INTO existingFile
Dim fileContent = File.ReadAllText(fileToCopy)

File.AppendAllText(existingFile, fileContent)

Использование Path.Combine немного лучше, чем объединение строк.

Вы можете буквально добавить все байты, используя такой подход:

Using fs As New System.IO.FileStream(existingFile, IO.FileMode.Append)
    Dim bytes() As Byte = System.IO.File.ReadAllBytes(fileToCopy)
    fs.Write(bytes, 0, bytes.Length)
End Using
Другие вопросы по тегам