在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放到一个列表里吗?有点像流阅读器列表?一次读取多个文件的最佳方法是什么?

在c#中可以一次读取多个文件吗?

您可能需要:

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