чтение файлов в подпапках в каталоге c # streamreader

Мне нужно найти все файлы и все подпапки в каталоге. Я опускаю FtpWebRequest. Вот что я написал до сих пор:

 private string[] fileList () {

    StringBuilder result = new StringBuilder();
    WebResponse response = null;
    FtpWebRequest reqFtp = null;

    //makes request to ftp server

    StreamReader reader = new StreamReader(response.GetResponseStream());
    string line = reader.ReadLine();

    //reads everything in directory but does not open the subfolders    
    while (line != null)
    {
        result.Append(line);
        result.Append("\n");
        line = reader.ReadLine();
    }

    result.Remove(result.ToString().LastIndexOf('\n');
    return result.ToString().Split('\n');
}

Это показывает мне все файлы и папки в указанном каталоге. Однако у меня вопрос: как мне прочитать файлы, которые находятся в каждой подпапке в этом каталоге?

Есть ли способ определить, что я достиг папки, чтобы я мог сохранить путь как индекс в строке [], возможно, и продолжать читать, пока не кончатся папки?

Я намерен перезаписать каждый файл на моем локальном компьютере найденными файлами, читаемыми с Ftp-сервера.


person avidprogrammer    schedule 24.04.2013    source источник
comment
Рекурсивно перечислить файлы в каталоге: stackoverflow.com/questions/929276/   -  person tnw    schedule 24.04.2013


Ответы (1)


После того, как у вас есть список файлов и / или каталогов, вам нужно будет выполнить новый ftp-запрос, чтобы получить элементы в этом списке. Например, если я запрашиваю содержимое каталога и получаю список файлов, вам нужно будет просмотреть этот список, делая запрос для каждого файла. Затем внутри цикла перезапишите вашу локальную копию. В основном вы будете обрабатывать это так, как если бы локальные файлы использовали только ftp-запрос и читали поток, где вы обычно открывали бы файл и читали поток.

Этот вопрос показывает, как рекурсивно получить все файлы в текущем каталоге и подкаталогах. Как рекурсивно перечислить все файлы в каталог на C #?

Если вы находитесь в одном домене, вы можете использовать пути UNC с обычными объектами каталога / файла и полностью отказаться от ftp-запроса.

person evanmcdonnal    schedule 24.04.2013
comment
Мне нужно сделать новый запрос для каждого файла, который отличается (в байтах)? Мне это не кажется правильным. - person avidprogrammer; 24.04.2013
comment
@avidprogrammer ваш поток - это содержимое каталога, а не содержимое файлов. Если бы это было так, ваш цикл читал бы содержимое файла. Так что да, вам придется открывать новый поток для каждого файла. Когда вы читаете файлы на локальном жестком диске, можете ли вы объединить их все в один поток? То же самое и здесь. - person evanmcdonnal; 24.04.2013