我想将2个.txt文件合并到一个文本文件中。假设我有2个文本文件。第一个只包含100行“再试一次”。像这样的画面:合并2个文本文件ASP.NET
而第二个文本文件中包含的随机码一堆:
我要合并这2个文本文件,这样一个在下面的图片:
我有一周,我还没有弄清楚。
我想将2个.txt文件合并到一个文本文件中。假设我有2个文本文件。第一个只包含100行“再试一次”。像这样的画面:合并2个文本文件ASP.NET
而第二个文本文件中包含的随机码一堆:
我要合并这2个文本文件,这样一个在下面的图片:
我有一周,我还没有弄清楚。
编辑:我编辑代码通过吉姆,他警告我,现在它的工作。 首先,您需要读取两个文件并将所有行存储到字符串数组中。然后像下面的波纹管一样环绕它们。你需要从第二个文件中检查和写入每五个项目。 PS:我没有尝试过这个代码,但是它确实没有错误。
string[] first = System.IO.File.ReadAllLines("path of first txt file");
string[] second = System.IO.File.ReadAllLines("path of second txt file");
var sb = new StringBuilder();
var k = 0;
var m = 0;
for (int i = m; i < second.Length; i++)
{
m = i + 1;
for (int j = k; j < first.Length; j++)
{
k = j + 1;
if (j != 0 && j % 4 == 0)
{
sb.Append(second[i] + "\n");
break;
}
else
{
sb.Append(first[j] + "\n");
continue;
}
}
}
// create new txt file
var file = new System.IO.StreamWriter("path of third txt file");
file.WriteLine(sb.ToString());
你确定这将工作正确吗?似乎它会输出太多东西。也就是说,它会为'first'的每一行输出全部'second'。也许你的意思是“继续”是一个“休息”?但是这也行不通。我认为你采取了错误的做法。这个问题不能通过像你拥有的简单的嵌套循环结构来解决。 – 2014-11-23 00:49:22
感谢Jim纠正我,我编辑代码。我测试和工作。 – Kadir 2014-11-23 10:38:52
只要打开这两个文件,并在循环中从第一行和第二行中读取四行。在读取每行时输出。
using (var outputFile = File.CreateText("OutputFile.txt"))
{
using (var input1 = File.OpenText("TryAgain.txt"))
using (var input2 = File.OpenText("File2.txt"))
{
while (!input1.EndOfStream && !input2.EndOfStream))
{
int i;
for (i = 0; i < 4 && !input1.EndOfStream; ++i))
{
var s1 = input1.ReadLine();
outputFile.WriteLine(s1);
}
if (i != 4) break; // end of first file
// now read one line from the other file, and output it
var s2 = input2.ReadLine();
outputFile.WriteLine(s2);
}
}
}
这有不必一下子读取两个文件到内存的优势,你不必在内存中构建的整个输出。每行在写入后立即输出。
难道你不能只读取这两个文件,并合并你的线,并将其写入第三个文件? – 2014-11-22 17:19:30
@VsevolodGoloviznin,这是我想要的。但我还没有弄明白。 – aldoblack 2014-11-22 17:22:17
您可以查看该参考以阅读该文件:http://msdn.microsoft.com/en-us/library/ezwyzy7b.aspx以及用于写入文件的文件:http://msdn.microsoft.com/en-us /library/8bh11f1k.aspx – 2014-11-22 17:24:05