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

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

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

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


(過去ログ 162 を表示中)

[トピック内 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 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -