vs2005 vbについて教えてください。


Application A
Dim Writer As New IO.StreamWriter("C:\xxx.txt", True)

Application B
Dim Reader2 As New IO.StreamReader("C:\xxx.txt", True)

2つのアプリがあってそれぞれ同じファイルをread/writeのストリームを開いています。この場合、2番目に開いたsteamはエラーとなります。排他制御がかかっていると思いますが、どちらを先に開いてもopenできるようにするにはどうしたらいいでしょうか?

教えてください。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/19 00:15:02
  • 終了:2010/05/20 20:17:35

回答(4件)

id:heke2mee No.1

heke2mee回答回数162ベストアンサー獲得回数432010/05/19 01:33:18

ポイント23pt

FileStream コンストラクター (String, FileMode, FileAccess, FileShare)

http://msdn.microsoft.com/ja-jp/library/5h0z48dh.aspx


FileShare 列挙体

http://msdn.microsoft.com/ja-jp/library/system.io.fileshare.aspx


たぶんこんな感じかな

'ファイルを開く

Dim fs As New FileStream("C:\test.txt",FileMode.Open,FileAccess.Read, FileShare.ReadWrite)

id:ko8820 No.2

ko8820回答回数1221ベストアンサー獲得回数692010/05/19 09:50:47

ポイント23pt

read/writeモードで、同一ファイルを開くことはできません。

id:mattn No.3

mattn回答回数104ベストアンサー獲得回数232010/05/19 12:01:31

ポイント22pt

FileStreamで実現出来ます。StreamReaderが使いたい場合はコンストラクタに渡してしまえば使えます。

Dim Stream As New FileStream( _
"C:\xxx.txt", _
FileMode.Open, _
FileAccess.Read, _
FileShare.ReadWrite _
)
Using Reader As New StreamReader(Stream)
id:hideAki No.4

hideAki回答回数2ベストアンサー獲得回数02010/05/19 12:35:28

ポイント22pt

質問から逸れますが、ファイルの内容は開いたタイミングによりまちまちになる可能性があります。

ファイルの更新があった(closeされた)タイミングを見計らって(FileSystemWatcherクラス等を利用)開くのも考慮にいれた方がよいかもしれません。

ご参考まで。

■@IT:.NET TIPS 監視により作成/変更が通知されたファイルを開くには? - C# VB.NET

 http://www.atmarkit.co.jp/fdotnet/dotnettips/284watchopen/watcho...

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません