在c#中可以一次读取多个文件吗?
本文关键字:读取 一次 文件 | 更新日期: 2023-09-27 18:03:42
是否可以在c#中一次读取多个文件?到目前为止我都明白了。
for (int i=1; i<Foo.number_of_files+1;i++)
{
StreamReader aa= new StreamReader (@"realtime_" + Foo.main_id + "_" + i + ".txt");
}
我知道我需要为每个文件创建一个唯一的StreamReader
名称,如何做到这一点?我能把StreamReade
放到一个列表里吗?有点像流阅读器列表?一次读取多个文件的最佳方法是什么?
您可能需要:
var readers = new List<StreamReader> ();
for (...)
{
var aa = new StreamReader(@"realtime_" + Foo.main_id + "_" + i + ".txt");
readers.Add(aa);
}
我会考虑查看此操作的并行扩展:
平行。文档: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();
});
是的,一次读取多个文件,创建流阅读器的列表类型对象没有根本问题。
您需要考虑和解决的真正问题是确保关闭并干净地处理它们。并且不要尝试使用多个对象访问单个文件。
看不到任何真正的问题,但也许这有帮助:
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);
}