1

別のプロセスが使用しているため、この関数は機能しません。

関数はファイルを読み取り、そのデータで何かを行い、結果をこのファイルに書き込む必要があります。

private void changeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        LB2.Visible = true;
        TB2.Visible = true;
            SaveFileDialog save = new SaveFileDialog();
            if (save.ShowDialog() == DialogResult.OK)
            {
                double maxlen;
                BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open));
                BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create));
                Find(read, out maxlen);
                while (read.BaseStream.Position < read.BaseStream.Length)
                {
                    double A = read.ReadDouble();
                    if (A > 0)
                    {
                        read.BaseStream.Seek(-8, SeekOrigin.Current);
                        w.Write(Find(read, out maxlen));
                    }
                    else
                        w.Write(A);

                }
                read.BaseStream.Close();
                w.BaseStream.Close();
            }
        }
4

5 に答える 5

2

ストリームが閉じられていることを確認するためにこれを行います

using( BinaryReader read = new BinaryReader(new FileStream(save.FileName, FileMode.Open)))
{
   using( BinaryWriter w = new BinaryWriter(new FileStream(save.FileName, FileMode.Create)) )
   {
       // CODE HERE
   }
}

例外が発生し、ストリーム/リーダー/ライターを閉じていないようです。

于 2013-04-25T21:04:09.077 に答える