在StreamWriter中使用file.Close()

时间:2011-06-18 12:58:30

标签: c# .net streamwriter

我在尝试使用file.Close和StreamWriter这个方法时遇到了问题,它似乎不喜欢它。有人可以证明如何做到这一点。 (原因是,另一种方法是访问正在使用的文件,因此无法访问,因为该文件仍被其他方法使用。)

到目前为止

代码:

private static void TrimColon()
{
    using (StreamWriter sw = File.AppendText(@"process_trimmed.lst"))
    {
        StreamReader sr = new StreamReader(@"process_trim.lst");
        string myString = "";
        while (!sr.EndOfStream)
        {

            myString = sr.ReadLine();
            int index = myString.LastIndexOf(":");
            if (index > 0)
                myString = myString.Substring(0, index);

            sw.WriteLine(myString);
        }
    }
}

2 个答案:

答案 0 :(得分:4)

由于“using”语句,StreamWriter已关闭以及刷新。所以不需要打电话。

答案 1 :(得分:4)

private static void TrimColon(String inputFilePath, String outputFilePath)
{
    //Error checking file paths
    if (String.IsNullOrWhiteSpace(inputFilePath))
        throw new ArgumentException("inputFilePath");
    if (String.IsNullOrWhiteSpace(outputFilePath))
        throw new ArgumentException("outputFilePath");

    //Check to see if files exist? - Up to you, I would.

    using (var streamReader = File.OpenText(inputFilePath))
    using (var streamWriter = File.AppendText(outputFilePath))
    {
        var text = String.Empty;

        while (!streamReader.EndOfStream)
        {
            text = streamReader.ReadLine();

            var index = text.LastIndexOf(":");
            if (index > 0)
                text = text.Substring(0, index);

            streamWriter.WriteLine(text);
        }
    }
}