C# 逐行读取文件,并将其逐行写入另一个文件

C# 逐行读取文件,并将其逐行写入另一个文件,c#,C#,我必须逐行读取现有文件“OperationData.txt”的内容,并将这些数据逐行写入Excel工作表“datawarehouse.csv”中。文件“operationaldata.txt”的内容如图()所示: 必须以不同的方式将OperationData.txt中的数据写入并转换为datawarehouse.csv。 它在csv文件中必须如下所示: “日期;时间;随机值\n”\n表示在这三行之后执行返回 必须在datawarehouse.csv文件中写入这种格式(全部10秒)。最后应该是这样

我必须逐行读取现有文件“OperationData.txt”的内容,并将这些数据逐行写入Excel工作表“datawarehouse.csv”中。文件“operationaldata.txt”的内容如图()所示:

必须以不同的方式将OperationData.txt中的数据写入并转换为datawarehouse.csv。 它在csv文件中必须如下所示:

“日期;时间;随机值\n”\n表示在这三行之后执行返回

必须在datawarehouse.csv文件中写入这种格式(全部10秒)。最后应该是这样的:

生成datawarehouse.csv的代码:

我必须对etltxt2csv的代码进行哪些更改,以便以这种方式写入和转换数据:

“日期;时间;随机值\n”(始终是前三行中的前三行,然后是带返回值的下三行\n)

进入datawarehouse.csv文件


当我执行此处列出的etltxt2代码时,excel文件的输出不会像图片(datawarehouse.csv)中的上述那样进行转换。

您需要从.txt文件中读取三行,并将它们组合成一行进行输出:

using (var input = File.OpenText(txt_file_name))
{
    using (var output = File.CreateText(csv_file_name))
    {
        var date = input.ReadLine();
        var time = input.ReadLine();
        var random = input.ReadLine();
        output.WriteLine("{0};{1};{2}", date, time, random);
    }
}
var
是告诉编译器推断类型的关键字。例如,当您编写:

var input = File.OpenText(filename);
编译器知道
File.OpenText
返回一个
StreamReader
,因此它会自动进行
输入
类型
StreamReader
。下面是与上面相同的代码,
var
替换为实际类型:

using (StreamReader input = File.OpenText(txt_file_name))
{
    using (StreamWriter output = File.CreateText(csv_file_name))
    {
        string date = input.ReadLine();
        string time = input.ReadLine();
        string random = input.ReadLine();
        output.WriteLine("{0};{1};{2}", date, time, random);
    }
}

Jim Mischel同意,输出文件中每行需要读取3行

如果保持相同的API调用,则循环可能是这样的:

(注意:使用Jim Mischel的API调用会更好地使用内存和性能…)

for(int i=0;i+2
您的问题信息太多,将被否决并忽略。。请提供一个更简短、更切题的问题。。没有人需要知道你的作业的细节。
Thread.Sleep(10000)?你想为你处理的每一行等待10秒吗?我不担心这个程序会占用太多的系统资源,但如果你有妄想症,只需睡1毫秒就可以了。@EyalPerry它还很长吗?因为它是根据Blorgebeard编辑的:)太长/不清楚。。。而且几乎每一部分都已经回答了很多次了(比如)。编辑不能删除代码或添加问题-因此,虽然Blorgeberd删除了一些绒毛,但这并不能使问题具体化和得到充分研究。@ebyrob这个练习是我教授的想法。从我的观点来看,是的,如果我说2000毫秒=2瑞典克朗更好,这样我就不必总是等10秒钟。谢谢你的快速回复。我要试试这个。“var”对我来说是新事物。这是数据类型吗?对不起,我是一个初学者。@初学者:如果这解决了你的问题,请将其标记为已接受的答案。当然再次感谢。我编辑了我的帖子。希望它更好更清晰一点。也非常感谢你的帮助。我要试试这个。我的教授想让我们在“createdata”线程中使用。睡眠时间为2000毫秒。在etltxt2csv中,他希望我们让进程休眠10秒(10000毫秒)@Karim看到我的更新答案。@Jim Mischel非常感谢!!关键字“var”为变量中的值设置了类型,这对吗?就像你说的var input=File.OpenText(文件名);返回StreamReader类型,这意味着变量“Input”的类型为StreamReader?再次感谢。:@Karim这基本上是正确的。您可以在MSDN文档中查找
var
的用法。@Jim Mischel谢谢您,Mischel先生,谢谢ebyrob
var input = File.OpenText(filename);
using (StreamReader input = File.OpenText(txt_file_name))
{
    using (StreamWriter output = File.CreateText(csv_file_name))
    {
        string date = input.ReadLine();
        string time = input.ReadLine();
        string random = input.ReadLine();
        output.WriteLine("{0};{1};{2}", date, time, random);
    }
}
for (int i = 0; i + 2 < content.Length; i += 3)
{
   // Console.WriteLine(content[i] + ";" + content[i+1] + ";" + content[i+2]);
   File.AppendAllText(
      @"C:\ETL-Process\datawarehouse.csv",
      content[i + 0] + ";"
      + content[i + 1] + ";"
      + content[i + 2] + "\n"
      );
}