これを行う方法は多岐にわたりましたが、ファイルを保存する前に削除しようとするとファイルが使用中であることが表示されます。は使用中であるためファイルを保存できません
ご覧のとおり、「使用中」のブロックにはすべてがあります。私はまた、ファイルを "閉じる"し、明示的に "dispose"も呼び出そうと試みました。しかし、コードをもう一度実行すると、ファイルが使用中であることがわかります。ファイルを上書きできるようにするにはどうすればよいですか?
私もそれをこのように試してみた:
using (Bitmap bmp = new Bitmap((Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap)))
{
if (bmp != null)
{
if (File.Exists(filename)) { File.Delete(filename); }
using (MemoryStream memory = new MemoryStream())
{
using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite))
{
bmp.Save(memory, ImageFormat.Bmp);
byte[] bytes = memory.ToArray();
fs.Write(bytes, 0, bytes.Length);
fs.Close();
}
memory.Dispose();
}
bmp.Dispose();
break;
}
}
をし、それはまだ私に同じエラーを与えます。
ストリームを削除せずにプログラムを閉じようとした後で、これを後で追加しましたか?古いストリームがあなたのコンピュータを浮かべてファイルをブロックする可能性があり、アクセスできないためファイルを閉じることができません。あなたのコンピュータを再起動してみると、この問題は解決されるはずです(これが問題の場合)。 – Lehue
失われたファイルストリームを殺す他の方法があるかもしれませんが、私は(正直言って私もそれらを探したことはありません)何も知らない。 – Lehue
おそらく理由があります。あなたが作成したファイル/ファイルパスを利用する他に何かありますか?たぶん、ファイルパスは、何かをしてロックしたり、ストリームをクリーンアップしたりしないものに返されますか?あなたのFileStreamの周りにブロックを使用している限り、あなたが私たちに示したコードにない可能性があります。私はあなたがループでこれを置くと成功するでしょう(あなたが入力するときにファイルがロックされていないと仮定して)賭けても構わないと思います。 – Igor