Я пытаюсь достичь нескольких вещей:
- объединить несколько отдельных текстовых файлов в объединенный файл,
- переместить объединенные файлы в новую папку.
Я назначил каждую из этих задач методу.
Что-то в первом методе висит на файле, хотя я закрываю и утилизирую потоковое считывающее устройство - но я не могу понять, что именно.Я знаю, что процесс из первого метода висит в файле, потому что, когда я закомментирую первый метод, второй метод перемещает файлы без проблем.
РЕДАКТИРОВАТЬ Первый метод возвращает значение для нового большого файла.Это передается как параметр для второго метода.Когда второй метод пытается обратиться к этому файлу, то есть когда программа выдает ошибку (5-я строка снизу)
Большинство постов в SO советуют закрывать / утилизировать объекты ввода-вывода, но я уже делаю это,Они также советуют использовать сторонний инструмент для изучения того, какой процесс висит в файле, но я уже знаю, что это первый метод слияния (потому что, когда он закомментирован, программа запускается).
Это пример похожего вопроса: https://stackoverflow.com/questions/8088225/file-use-by-another-process-exception-in-c-sharp
Чего мне не хватает?
newBigFile as string = mergeFiles (inputLocation, outputLocation)
moveFiles = moveMergedFiles(inputLocation, outputLocation, newBigFile)
Private Function mergeFiles(ByVal inputLocationFilesToMerge As String, ByVal outputLocationHL7 As String) As String
Dim newMergedFile As String = inputLocationFilesToMerge & "\jointFile" & DateTime.Now.Month & DateTime.Now.Day & DateTime.Now.Year & DateTime.Now.Hour & DateTime.Now.Minute & ".hl7"
Dim objWriter As New System.IO.StreamWriter(newMergedFile)
Dim HL7FilePaths As String() = System.IO.Directory.GetFiles(inputLocationFilesToMerge, "*.hl7")
For Each p As String In HL7FilePaths
Dim sr As StreamReader = New StreamReader(p)
objWriter.Write(sr)
sr.Close()
sr.Dispose()
Next
objWriter.Close()
objWriter.Dispose()
Return (newMergedFile)
End Function
Private Sub moveMergedFiles(ByVal inputLocationFilesToMerge As String, ByVal outputLocationHL7 As String, ByVal mergedFile As String)
For Each q As String In System.IO.Directory.GetFiles(inputLocationFilesToMerge, "*.hl7")
If (Not (q = mergedFile)) Then **this is where the error comes from**
File.Move(q, outputLocationHL7 & "\" & Path.GetFileName(q))
End If
Next
End Sub