最后几行CSV文件被截断

时间:2011-08-15 13:49:19

标签: c# io

我有以下程序在指定的csv文件上运行:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        string path = @"C:/Documents and Settings/expn261/Desktop/SAPHR_Joiners_20110812.csv";
        string strCharater = File.ReadAllText(path,UTF7Encoding.UTF7);

        strCharater = strCharater.ToString();

        strCharater = Regex.Replace(strCharater, "[èéèëêð]", "e");
        strCharater = Regex.Replace(strCharater, "[ÉÈËÊ]", "E");
        strCharater = Regex.Replace(strCharater, "[àâä]", "a");
        strCharater = Regex.Replace(strCharater, "[ÀÁÂÃÄÅ]", "A");
        strCharater = Regex.Replace(strCharater, "[àáâãäå]", "a");
        strCharater = Regex.Replace(strCharater, "[ÙÚÛÜ]", "U");
        strCharater = Regex.Replace(strCharater, "[ùúûüµ]", "u");
        strCharater = Regex.Replace(strCharater, "[òóôõöø]", "o");
        strCharater = Regex.Replace(strCharater, "[ÒÓÔÕÖØ]", "O");
        strCharater = Regex.Replace(strCharater, "[ìíîï]", "i");
        strCharater = Regex.Replace(strCharater, "[ÌÍÎÏ]", "I");
        strCharater = Regex.Replace(strCharater, "[š]", "s");
        strCharater = Regex.Replace(strCharater, "[Š]", "S");
        strCharater = Regex.Replace(strCharater, "[ñ]", "n");
        strCharater = Regex.Replace(strCharater, "[Ñ]", "N");
        strCharater = Regex.Replace(strCharater, "[ç]", "c");
        strCharater = Regex.Replace(strCharater, "[Ç]", "C");
        strCharater = Regex.Replace(strCharater, "[ÿ]", "y");
        strCharater = Regex.Replace(strCharater, "[Ÿ]", "Y");
        strCharater = Regex.Replace(strCharater, "[ž]", "z");
        strCharater = Regex.Replace(strCharater, "[Ž]", "Z");
        strCharater = Regex.Replace(strCharater, "[Ð]", "D");
        strCharater = Regex.Replace(strCharater, "[œ]", "oe");
        strCharater = Regex.Replace(strCharater, "[Œ]", "Oe");
        //strCharater = Regex.Replace(strCharater, "[«»\u201C\u201D\u201E\u201F\u2033\u2036]", "\"");
        //strCharater = Regex.Replace(strCharater, "[\u2026]", "...");

        string path2 = (@"C:/Documents and Settings/expn261/Desktop/file.csv");
        StreamWriter sw = new StreamWriter(path2);
        sw.WriteLine(strCharater,UTF7Encoding.UTF7);
    }
}

问题在于,无论在最后3或4行上运行哪个文件都不会显示。

问题是什么?

1 个答案:

答案 0 :(得分:2)

您应该使用IDisposables作为StreamWriter使用(){},例如:

using(StreamWriter sw = new StreamWriter(path2))
{
    sw.WriteLine(strCharater, UTF7Encoding.UTF7);
}

在这种情况下,clean dispose将调用Close()的{​​{1}}方法,这将导致它将缓冲区写入文件。