是否可以在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的列表?一次读取多个文件的最佳方法是什么?
答案 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);
}