【问题标题】:Joining two files in C#, split options在 C# 中加入两个文件,拆分选项
【发布时间】:2015-07-11 01:55:43
【问题描述】:

我目前正在尝试处理文件,加入多个文件并遇到问题,因为文件 1 中的最后一个作品与文件 2 中的第一个单词相关联。例如:

文件 1:约翰换了新发型

文件 2:迈克的新发型

它打印我“haircutMike”。

我用来分割单词的代码:

        input.Split(' ').ToList().ForEach(n =>{});

我也在从多个文件中制作一个大文件,如下所示:

string[] files = { "f1.txt", "f2.txt" };
        FileStream outputFile = new FileStream("new.txt", FileMode.Create);

        using (StreamWriter ws = new StreamWriter(outputFile))
        {
            foreach (string file in files)
            {
                ws.Write(System.IO.File.ReadAllText(file) + " ");
            }
        }

@编辑

更改了一些代码,当然我的意思是使用流而不是二进制,我也在使用拆分,因为我想计算文件中每个单词的数量,所以我必须拆分空格、点等。

您提到使用 + " " 选项,虽然它有效,但它在总数中增加了 1 个字母。

【问题讨论】:

  • ws.Write(System.IO.File.ReadAllBytes(file) + " ");首先你没有解释你想要发生什么......其次你为什么要使用 split ?
  • 目前您将文件视为二进制数据。 (不清楚你为什么使用BinaryWriter 而不仅仅是Stream,请注意。)拆分词从何而来?请注意,如果您在文件 1 的末尾有换行符,则不会有问题 - 尽管您可能会在文件中途出现 Unicode 字节顺序标记,这不是很好。
  • 运算符“+”不能应用于“void”和“string”类型的操作数。
  • 哦,哇,我刚刚检查了我使用的是二进制写入器而不是流写入器,哇。请稍等,我会努力解决的。
  • 稍微编辑了我的问题,+ " " 选项有效,虽然你问我为什么要分裂,但我这样做是为了计算单词,例如文件 1 中的“John is my cousing” 2 “John”,我想数 John = 2,等等。当我做 +“”时,它会使我的程序添加“=1”(是的空格 = 1)。

标签: c# file split stream streamreader


【解决方案1】:

编辑: 用于多个输入文件:

 string[] files = { "f1.txt", "f2.txt" };

 var allLines = files.SelectMany(i => System.IO.File.ReadAllLines(i));

 System.IO.File.WriteAllLines("new.txt", allLines.ToArray());

【讨论】:

  • 这个例子是针对两个文件的,虽然我打算在普通程序中使用 100+ 个文件..
  • @Ken'ichiMatsuyama 好的,我要编辑,但是使用这个想法可以解决您的问题。
  • 成功了,谢谢,必须检查 SelectMany 文档,谢谢 Hossein。
  • @Ken'ichiMatsuyama 如果您使用Select,结果将是一个字符串数组,但您将一起使用所有行并将它们保存在一个文件中,因此您应该展平这些数组,在本例中为 SelectMany 为您完成这项工作。
猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
相关资源
最近更新 更多