1

私はC#を初めて使用しますが、新しいファイルに保存するときに少し問題があります。私のプログラムには、保存するための2つのオプションがあります。保存と名前を付けて保存です。

保存時に共有違反エラーが発生していましたが、前のファイルストリームを閉じることで修正しました。ただし、コードとして保存すると共有違反エラーが発生する理由をまだ理解できません。

コードは次のとおりです。

        // get a file stream from the file chooser
        FileStream file = File.OpenWrite(saveFc.Filename);
        // check to see if the file is Ok
        bool fileOk = file.CanWrite;
        if (fileOk == true)
        {
            // get the filename
            string filename = file.Name;
            // store the filename for later use
            UtilityClass.filename = filename;
            // get the text from textview1
            string text = textview1.Buffer.Text;
            // get a StreamWriter
            StreamWriter writer = File.CreateText(filename);
            // write to the file
            writer.Write(text);
            // close/save the file
            writer.Close();
            file.Close();
        }
    }
    // close the file c

あなたが私がそれを理解するのを手伝ってくれるなら、それは大いにありがたいです。ありがとう!

4

1 に答える 1

3

同じファイルを2回開いています。

FileStream file = File.OpenWrite(saveFc.Filename);

と:

string filename = file.Name;
StreamWriter writer = File.CreateText(filename);

コードはおそらく次のように簡略化できます。

using (var writer = File.CreateText(saveFc.Filename))
{
    // store the filename for later use
    UtilityClass.filename = saveFc.Filename;

    // get the text from textview1
    string text = textview1.Buffer.Text;

    // write the text
    writer.Write(text);
}

CreateText / OpenWriteを使用してファイルを開くと、常に書き込み可能になります(または例外がスローされます)。ブロックは、終了時にusing自動的に閉じwriterます。

于 2012-06-29T04:29:53.940 に答える