将文本附加到CSV文件中的行

时间:2011-01-17 16:44:06

标签: c# csv

这个问题似乎已经在网络上被问了一百万次,但我找不到对我有用的答案。

基本上,我有一个CSV文件,其中有多列(比如两列)。程序遍历CSV文件中的每一行,取第一列值,然后要求用户将值放在第二列中。这是在运行Windows 6的手持设备上完成的。我正在使用C#进行开发。

这似乎很简单。但我似乎无法在一行中添加文字。

我无法使用OleDb,因为System.Data.Oledb不在我正在使用的.Net版本中。我可以使用另一个CSV文件,当它们完成每一行时,它会将其写入另一个CSV文件。但问题是 - 最终产生的文件需要包含每一行(所以如果他们将电池拉出一半)。如果他们回去继续这样做又怎么样呢,该程序将如何知道从何处开始。

1 个答案:

答案 0 :(得分:1)

对于每一行,打开输出文件,将新行追加到它,然后关闭输出文件。要重新启动,请计算上一次运行中现有输出文件中的行数,这将使您在输入文件中启动(即跳过输入文件中的行数)。

编辑:在开始时,使用System.IO.File.Copy将输入文件复制到输出文件,以便在发生故障时获得所有文件。现在打开输入文件,读取一行,转换它,使用File.ReadAllLines将所有输出文件读入一个数组,替换你在数组中右边索引处更改的行,然后使用File.WriteAllLines写出来新的输出文件。

这样的事情:

string inputFileName = ""; // Use a sensible file name.
string outputFileName = ""; // Use a sensible file name.
File.Copy(inputFileName, outputFileName, true);
using (StreamReader reader = new StreamReader(inputFileName))
{
    string line = null;
    int inputLinesIndex = 0;
    while ((line = reader.ReadLine()) != null)
    {
        string convertedLine = ConvertLine(line);
        string[] outputFileLines = File.ReadAllLines(outputFileName);
        if (inputLinesIndex < outputFileLines.Length)
        {
            outputFileLines[inputLinesIndex] = convertedLine;
            File.WriteAllLines(outputFileName, outputFileLines);
        }
        inputLinesIndex++;
    }
}