1

このメソッドで StreamWriter を使用して file.Close を使用しようとすると問題が発生します。気に入らないようです。誰かがこれをどのように行うことができるかを示すことができますか. (その理由は、別のメソッドが使用中のファイルにアクセスし、そのファイルがまだ別のメソッドで使用されているため、アクセスできないためです。)

これまでのコード:

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);
        }
    }
}
4

2 に答える 2

4

「using」ステートメントにより、StreamWriter は閉じられ、フラッシュされます。したがって、閉じる必要はありません。

于 2011-06-18T13:03:34.110 に答える
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);
        }
    }
}
于 2011-06-18T13:10:02.380 に答える