C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ファイルを読み込んだ後にロックを解除するには

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■93622 / inTopicNo.1)  ファイルを読み込んだ後にロックを解除するには
  
□投稿者/ 妻 (1回)-(2019/12/27(Fri) 23:31:50)

分類:[.NET 全般] 

バイナリファイルを以下のようにして読み込んだ後に、
BinaryReaderを削除せずに残したままで、ファイルを削除したいのですが、
BinaryReaderを別変数にコピーするにはどうしたら良いですか?

Me.fs = New FileStream(FileName, FileMode.Open)
Me.br = New BinaryReader(Me.fs, Encoding.ASCII)


Me.br.Close()
Me.fs.Close()


引用返信 編集キー/
■93623 / inTopicNo.2)  Re[1]: ファイルを読み込んだ後にロックを解除するには
□投稿者/ Hongliang (947回)-(2019/12/27(Fri) 23:44:51)
2019/12/28(Sat) 00:59:18 編集(投稿者)

BinaryReaderを残しておくということは、つまり後でファイルの内容を読み込みたいということですよね?
削除できたとして、「後でファイルの内容を読み込み」ができなくなってしまいますよ。

File.ReadAllBytesメソッドなどでファイルの内容をすべて事前に読み取ってしまうのはどうでしょうか。
読み取ったバイト配列をNew MemoryStreamの引数に渡せば、そこからBinaryReaderも作成できます。
ファイルサイズがあまりに大きいのであればこの手は使えませんが…。

<追記>実際のところ、FileShare.Deleteを使えば削除できるし削除後もFileStreamは読み取れるんですが、そこで同名ファイルを作ろうとするとエラーになったりとそれなりに面倒な状況になるのでお勧めしません。
引用返信 編集キー/
■93624 / inTopicNo.3)  Re[2]: ファイルを読み込んだ後にロックを解除するには
□投稿者/ 妻 (2回)-(2019/12/28(Sat) 10:52:26)
できました!!!!
どうもありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ