人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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できるようにするにはどうしたらいいでしょうか?

教えてください。


●質問者: mai_mai_mail
●カテゴリ:コンピュータ インターネット
✍キーワード:application as open Steam StreamReader
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● heke2mee
●23ポイント

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)


2 ● ko8820
●23ポイント

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


3 ● mattn
●22ポイント

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

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

4 ● hideAki
●22ポイント

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

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

ご参考まで。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ