【问题标题】:I need make array of streamreader [closed]我需要制作streamreader数组[关闭]
【发布时间】:2014-11-26 10:29:58
【问题描述】:

我想列出一个目录中的多个文件,我需要每10个文件合并一次。

public static void MergeFiles (string pathSource)
{
    DirectoryInfo diretorio = new DirectoryInfo(pathSource);
    FileInfo[] Arquivos = diretorio.GetFiles("*.*");            
    int i = 0;

    foreach (FileInfo file in Arquivos)
    {
        StreamReader[] writer = **new StreamReader();** //'System.IO.StreamReader' does not contain a constructor that takes 0 arguments
        writer[i] = File.OpenText(diretorio + file.Name);
        Console.WriteLine(writer.Count());
        i++;
    }
}

我该如何解决这个问题?

【问题讨论】:

  • 有什么问题?
  • 至少您应该以某种方式定义要合并的文件的顺序。或者您想每 10 个任意选择的文件合并一次?
  • +1。 SO 最近变得有点过于迂腐了。他可能没有以最清楚的方式问这个问题,但他正在展示他的尝试和自己的努力。
  • 我不知道如何制作 StreamReader 数组。查看错误:“System.IO.StreamReader”不包含采用 0 个参数的构造函数
  • 你看过MSDN上的文档,看看使用什么构造函数?

标签: c# arrays file merge streamreader


【解决方案1】:
StreamReader[] writer = new StreamReader[10];
foreach (FileInfo file in Arquivos)
{

    writer[i] = File.OpenText(diretorio + file.Name);
    Console.WriteLine(writer.Count());
    i++;
}

【讨论】:

    【解决方案2】:

    数组是固定大小的,应该按如下方式初始化(​​请不要称​​reader为“writer”):

    // Size of 10
    StreamReader[] writer = new StreamReader[10];
    

    您也在循环创建数组,这意味着每个文件将有一个数组。在循环外创建数组:

    StreamReader[] writer = new StreamReader[10];
    foreach (FileInfo file in Arquivos)
    {
        ...
    

    您可以考虑使用List<StreamReader>,因此如果您有 25 个文件,则可以合并 10、10 和最后剩下的 5 个文件:

    List<StreamReader> readers = new List<StreamReader>();
    foreach (FileInfo file in Arquivos)
    {
        readers.Add(File.OpenText(diretorio + file.Name));
        if (readers.Count >= 10)
        {
            MergeFiles(readers);
            readers.Clear();
        }
    }
    
    // Optionally handle the last bunch
    if (readers.Count > 0)
    {
        MergeFiles(readers);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 2019-08-08
      • 2018-11-10
      • 2011-06-15
      • 2013-01-10
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      相关资源
      最近更新 更多