Страница: 1 |
Страница: 1 |
Вопрос: Открытие всех папок и файлов в них
Добавлено: 26.04.07 10:31
Автор вопроса: ZXC
Нужно сделать так: открыть папку сделать с файлами которые в ней кое какие операции и если есть в ней ещё папка то заходим и в неё и тоже делаем со всеми файлами в ней кое какие операции, и т.д в результате надо открыть все папки и обработать все файлы в них, есть код EROS'a :-) который открывает все файлы в папке, но я не знаю как сделать чтобы заходить в другие папки :-(
'// VS 2005
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'// Где ищем
Dim directoryPath As String = "C:\Windows"
'// Что ищем
Dim searchPattern As String = "*.txt"
'// Получаем массив файлов по нашей маске
Dim resultFiles() As String = Directory.GetFiles(directoryPath, searchPattern)
'// В цикле перебираем все файлы
For Each filePath As String In resultFiles
'// Если файлов много и процесс может затянуться
'// то показываем юзверю ход выполнения задачи
Me.Text = filePath
Application.DoEvents()
Try
'// Получаем содержимое файла
Dim context As String = File.ReadAllText(filePath)
'// Обрабатываем его
Dim result As String = DoWork(context)
'// Если содержимое изменилось, то
'// переписываем исходный файл (если нужно)
If context.Length <> result.Length OrElse _
context <> result Then File.WriteAllText(result, filePath)
Catch ex As Exception
'// Обрабатываем ошибки
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Next
End Sub
Private Function DoWork(ByVal context As String) As String
'// Тут чего-нибудь делаем..
Dim retval As String = context
'// затем возвращаем измененное или исходное содержимое файла
Return retval
End Function
End Class
Не получается его доработать, я так понял надо с этим работать:
Надо как то цикл сделать который перебирает папки...плизз помогите реализовать всё
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #1
Добавлено: 26.04.07 11:07
Рекурсия?
Номер ответа: 2
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #2
Добавлено: 26.04.07 11:17
Понятия не имею что это )
Номер ответа: 3
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #3
Добавлено: 26.04.07 12:28
Помогите пожалуйста как реализовать..срочно надо
Номер ответа: 4
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #4
Добавлено: 26.04.07 12:34
в цикле обработки файлов или перед ним нужно проверять есть ли там папки, если есть, то смотреть в них и тд...
А вообще где-то видел на форуме рекурсию на вб6, переделать на NET проблем не должно составить (ИМХО), найду выложу...
Номер ответа: 5
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #5
Добавлено: 26.04.07 12:42
Выложи плизз, буду неблагодарен, хоть какойто пример будет
Номер ответа: 6
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #6
Добавлено: 26.04.07 12:44
ёпть Firefox не правельно слово исправил )
наобарот буду благодарен
Номер ответа: 7
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #7
Добавлено: 26.04.07 12:49
Вот нашел примерчик by LamerOnLine:
Dim FSO As FileSystemObject
Private Sub Form_Load()
Set FSO = New FileSystemObject
FindFiles ("C:\Games"
End Sub
Private Sub FindFiles(ByRef InitDir As String)
On Error Resume Next
Dim iFolder As Folder
For Each iFolder In FSO.GetFolder(InitDir).SubFolders
FindFiles (iFolder.Path)
Next iFolder
Dim iFile As File
For Each iFile In FSO.GetFolder(InitDir).Files
List1.AddItem iFile.Path
Next iFile
End Sub
Номер ответа: 8
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #8
Добавлено: 26.04.07 12:54
Спасибо, щас гляну, кстати, не большой вопрос, мж кто знает, использую
Номер ответа: 9
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #9
Добавлено: 26.04.07 13:07
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 27.04.07 00:37
Пример простейшей функции, выполняющей некий действия над файлами в директории и в дочерних директориях
Dim DI As New DirectoryInfo(directoryName)
For Each FI As FileInfo In DI.GetFiles()
Console.WriteLine(FI.FullName)
Next
For Each SubDI As DirectoryInfo In DI.GetDirectories
ProccessDirectory(SubDI.FullName)
Next
End Sub
Номер ответа: 11
Автор ответа:
ZXC
Вопросов: 30
Ответов: 106
Профиль | | #11
Добавлено: 28.04.07 10:22
Brand
отлично, то что нужно, спасибо