【发布时间】:2012-11-30 03:38:40
【问题描述】:
首先,我想提一下,我几天前才开始学习C#,所以我对它的了解有限。
我正在尝试创建一个程序,该程序将针对用户输入的某些短语解析文本文件,然后将它们输出到新的文本文档中。
目前,我让程序搜索原始输入文件并收集用户输入的选定文本,处理这些行,创建新的文本文件,然后将它们合并在一起,然后删除它们。
我猜这不是创建它的最有效方式,但我只是创建了它,并让它在一个合乎逻辑的庄园中工作,让我作为一个新手理解。
代码如下;
private void TextInput1()
{
using (StreamReader fileOpen = new StreamReader(txtInput.Text))
{
using (StreamWriter fileWrite = new StreamWriter(@"*DIRECTORY*\FIRSTFILE.txt"))
{
string file;
while ((file = fileOpen.ReadLine()) != null)
{
if (file.Contains(txtFind.Text))
{
fileWrite.Write(file + "\r\n");
}
}
}
}
}
private void TextInput2()
{
using (StreamReader fileOpen = new StreamReader(txtInput.Text))
{
using (StreamWriter fileWrite = new StreamWriter(@"*DIRECTORY*\SECONDFILE.txt"))
{
string file;
while ((file = fileOpen.ReadLine()) != null)
{
if (file.Contains(txtFind2.Text))
{
fileWrite.Write("\r\n" + file);
}
}
}
}
}
private static void Combination()
{
ArrayList fileArray = new ArrayList();
using (StreamWriter writer = File.CreateText(@"*DIRECTORY*\FINALOUTPUT.txt"))
{
using (StreamReader reader = File.OpenText(@"*DIRECTORY*\FIRSTFILE.txt"))
{
writer.Write(reader.ReadToEnd());
}
using (StreamReader reader = File.OpenText(@"*DIRECTORY*\SECONDFILE.txt"))
{
writer.Write(reader.ReadToEnd());
}
}
}
private static void Delete()
{
if (File.Exists(@"*DIRECTORY*\FIRSTFILE.txt"))
{
File.Delete(@"*DIRECTORY*\FIRSTFILE.txt");
}
if (File.Exists(@"*DIRECTORY*\SECONDFILE.txt"))
{
File.Delete(@"*DIRECTORY*\SECONDFILE.txt");
}
}
正在创建的输出文件只是输出第一个文本输入,然后输出第二个。我想知道是否有可能将它们合并到 1 个文件中,一次 1 行,因为它是一个连续的文件,这意味着需要来自输入 1 的信息,然后是 2,而不是全部 1,然后是全部 2。
谢谢,尼尔。
【问题讨论】:
-
所以,如果我理解正确的话,你想从第一个文件开始写一行,然后从第二个文件开始写一行,依此类推。对吗?
-
你可能想让你的问题更清楚,因为从给出的答案中,我想,我对你的愿望有不同的理解。您是否想要:并行读取两个文件并将输出并行输出到单个文件中,而无需
merge两个不同的输出文件?这是可能的(而且不是太难),尽管您可能会认为并行读取 2 个文件(位于同一硬盘驱动器上)通常不会比顺序读取 2 个文件快 2 倍。如果你不走运,它会慢得多。 -
对不起,如果我没有说清楚。 @Steve 有正确的想法。创建 2 个文件后,一次合并 1 行,即 I.E.第 1 行 - 文件 1,第 1 行 - 文件 2,第 2 行 - 文件 1,第 2 行 - 文件 2。