Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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



Не получается его доработать, я так понял надо с этим работать:
Dim directoryPath As String = "C:\Windows"

Надо как то цикл сделать который перебирает папки...плизз помогите реализовать всё

Ответить

  Ответы Всего ответов: 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:

Option Explicit
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
Спасибо, щас гляну, кстати, не большой вопрос, мж кто знает, использую
OpenFileDialog
, как узнать само название файла?
OpenfileDialog.FileName
даёт полный путь к нему, а название файла не знаю как узнать, подскажите плизз

Ответить

Номер ответа: 9
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #9 Добавлено: 26.04.07 13:07
System.IO.Path.GetFileName(OpenFileDialog1.FileName)

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 27.04.07 00:37
Пример простейшей функции, выполняющей некий действия над файлами в директории и в дочерних директориях

    Sub ProccessDirectory(ByVal directoryName As String)
        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
отлично, то что нужно, спасибо

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам