Можно ли одновременно читать несколько файлов в C #? - PullRequest
0 голосов
/ 25 июля 2011

Можно ли читать несколько файлов одновременно в C #?Я получил это до сих пор.

for (int i=1; i<Foo.number_of_files+1;i++)
{
    StreamReader aa= new StreamReader (@"realtime_" + Foo.main_id + "_" + i + ".txt");
}

Я знаю, что мне нужно создать уникальное имя StreamReader для каждого файла, как это сделать?Могу ли я поместить StreamReade r в список?Вроде как список StreamReaders?Как лучше всего читать несколько файлов одновременно?

Ответы [ 4 ]

4 голосов
/ 25 июля 2011

Вы, вероятно, хотите:

var readers = new List<StreamReader> ();

for (...)
{
   var aa = new StreamReader(@"realtime_" + Foo.main_id + "_" + i + ".txt"); 
   readers.Add(aa);
}
3 голосов
/ 25 июля 2011

Я хотел бы рассмотреть параллельные расширения для этой операции:

Параллель. Для документации: http://msdn.microsoft.com/en-us/library/dd783539.aspx

Параллель. Например: http://msdn.microsoft.com/en-us/library/dd460713.aspx

Код может выглядеть примерно так:

Parallel.For(0, Foo.number_of_files, i=> {
    var a = new StreamReader(@"realtime_" + Foo.main_id + "_" + i + ".txt");
    // Other read operations
    a.Close();
    a.Dispose();
});
2 голосов
/ 25 июля 2011

Да, нет никаких фундаментальных проблем с чтением нескольких файлов одновременно, созданием объектов спискового типа потоковых ридеров.

Реальная проблема, которую необходимо рассмотреть и решить, - это убедиться, что вы закрыли и удалили ихвсе чисто.И вы не пытаетесь получить доступ к отдельным файлам с несколькими объектами.

1 голос
/ 25 июля 2011

Не вижу никакого реального вопроса, но, возможно, это поможет:

List<StreamReader> SRL = new List<StreamReader>();
for (int i=1; i<Foo.number_of_files+1;i++)
{                   
    StreamReader aa= new StreamReader(@"realtime_" + Foo.main_id + "_" + i + ".txt");
    SRL.Add (aa);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...