Мой кодНеожиданное поведение внутри вложенных циклов
Dim fileReader As StreamReader
Dim fileName, temp, strVal As String
For i As Integer = 0 To lbFolder.Items.Count - 1
Dim iText As String = CStr(lbFolder.Items(i))
Dim partPath As String = lblPath.Text + "\" + iText
Dim pathNum As String = partPath + "\2100\"
Dim directory As New DirectoryInfo(pathNum)
Dim fileArr As FileInfo() = directory.GetFiles() ' Get a reference to each file in that directory.
' Display the names of the files.
Dim xItem As FileInfo
For Each xItem In fileArr
lblFname.Text = xItem.ToString
strVal = pathNum & xItem.ToString
lbFiles.Items.Add(strVal)
Next
For j = 0 To lbFiles.Items.Count - 1
fileReader = File.OpenText(pathNum + xItem.ToString)
temp = fileReader.ReadToEnd
File.AppendAllText(partPath + "\2100\" + "2100_Merged.txt", temp)
Next j
lbFiles.Items.Clear()
Next i
End Sub
У меня есть каталог с вложенными папками. Со многими детьми и каждым ребенком, имеющим 4 подщелицы, и каждый дочерний ребенок имеет 4 файла.
Родитель
... Ребенок
...... subchild1
......... Файл 1
....... ..File 2
......... Файл 3
......... Файл 4
...... subchild2
...... subchild3
...... subchild4
Мой Намерение смотреть на каждого ребенка, то принести Слейте все файлы в один файл txt, а затем перейти к следующему подчинду.
Псевдо код может выглядеть
open Subchild folder
for each file in subchild folder
listbox.additem(file)
next
for each item in listbox
add to temp file
next
output tmp file
next subchild
Что происходит в том, что при прохождении через
for each xItem in filArr
следующая серия IText происходит, которую я могу видеть сквозь часы. Это происходит, даже если у меня есть перерыв в первом следующем.
Как это исправить?
** Edit *****
Для тех, которые могли бы хотеть, чтобы проверить это здесь весь мой код.
Это требует 2 ListBoxes, 2 метки, 2 кнопки
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'open folders
Dim dialog = New FolderBrowserDialog()
dialog.SelectedPath = Application.StartupPath
If DialogResult.OK = dialog.ShowDialog() Then
lblPath.Text = dialog.SelectedPath
End If
For Each folder As String In System.IO.Directory.GetDirectories(lblPath.Text)
lbFolder.Items.Add(Path.GetFileName(folder))
Next
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim found700 As Boolean
Dim fileReader As StreamReader
Dim fileName, temp, strVal As String
For i As Integer = 0 To lbFolder.Items.Count - 1
Dim iText As String = CStr(lbFolder.Items(i))
Dim partPath As String = lblPath.Text + "\" + iText
Dim pathNum As String = partPath + "\2100\"
Dim directory As New DirectoryInfo(pathNum)
Dim fileArr As FileInfo() = directory.GetFiles() ' Get a reference to each file in that directory.
' Display the names of the files.
Dim xItem As FileInfo
For Each xItem In fileArr
lblFname.Text = xItem.ToString
strVal = pathNum & xItem.ToString
lbFiles.Items.Add(strVal)
Next
For j = 0 To lbFiles.Items.Count - 1
fileReader = File.OpenText(pathNum + xItem.ToString)
temp = fileReader.ReadToEnd
File.AppendAllText(pathNum + "2100_Merged.txt", temp)
Next j
lbFiles.Items.Clear()
Next i
End Sub
Я получаю это исключение, когда Я бегу таким образом. Необработанное исключение типа «System.IO.IOException» произошло в mscorlib.dll Дополнительная информация: Процесс не может получить доступ к файлу «C: \ Text \ Ackland Art Museum - Basement \ 2100 \ 2100_Merged.txt», потому что он используемый другим процессом. – JForgie
Я смог обратиться к нему. Я уже создал файл с файлами, и он был открыт. После удаления все отлично поработало. – JForgie