是否可以在C#中一次读取多个文件?

时间:2011-07-25 17:38:42

标签: c# file io streamreader

是否可以在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 个答案:

答案 0 :(得分:4)

你可能想要:

var readers = new List<StreamReader> ();

for (...)
{
   var aa = new StreamReader(@"realtime_" + Foo.main_id + "_" + i + ".txt"); 
   readers.Add(aa);
}

答案 1 :(得分:3)

我会考虑查看此操作的并行扩展:

Parallel.For文档: 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 :(得分:2)

是的,一次读取多个文件没有根本问题,创建了流读取器的列表类型对象。

您需要考虑和解决的真正问题是确保您完全关闭并妥善处理它们。并且您不会尝试访问具有多个对象的单个文件。

答案 3 :(得分:1)

看不到任何真正的问题,但也许这会有所帮助:

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);
}