テキストファイルへの二重アクセス への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2013/6/8 19:08:18
読み取り側がファイルを開く際の排他制御はどうなっていますか?
http://msdn.microsoft.com/ja-jp/library/system.io.fileshare.aspx
http://msdn.microsoft.com/ja-jp/library/system.io.fileshare.aspx
投稿者 Mya  (学生)
投稿日時
2013/6/8 18:59:42
USBPortにXbeeという無線機をつけてデータを受信していて、そのデータ受信のログをTeratermというターミナルソフトでテキストファイルに起こしています。
今VisualBasicで受信ログが記述されたテキストファイルを読み取り、表示するソフトを作成したのですが、
Teratermと自作ソフトの2つで同時に同じファイルにアクセスしているせいで、片方が起動しない(または正常に作動しない)というエラーがでて困っています。
自作ソフト側ではファイルを読み取るだけの機能しかないので、問題ないかなと思っていたのですが。。。
行いたいことは
1.Teratermにてログファイルをテキストファイルに起こす
2.テキストファイルの内容を自作ソフトで画面に表示させる
この2つです。どうすればやりたいことができるのでしょうか。
今VisualBasicで受信ログが記述されたテキストファイルを読み取り、表示するソフトを作成したのですが、
Teratermと自作ソフトの2つで同時に同じファイルにアクセスしているせいで、片方が起動しない(または正常に作動しない)というエラーがでて困っています。
自作ソフト側ではファイルを読み取るだけの機能しかないので、問題ないかなと思っていたのですが。。。
行いたいことは
1.Teratermにてログファイルをテキストファイルに起こす
2.テキストファイルの内容を自作ソフトで画面に表示させる
この2つです。どうすればやりたいことができるのでしょうか。
なるほど、自作ソフト側でファイルを開く際に「読み取り専用」とか「他のプロセスからのアクセスを許可する」といった制御をさせるようにすればいいのでしょうか?
現在は以下のようなソースを記述していますが
Dim Reader As New IO.StreamReader
_("C:\Work\output.txt", System.Text.Encoding.GetEncoding("Shift-JIS"))
これのIO,StreamReader以降を以下のように書き換えればよいのでしょうか。
("C:\Work\output.txt",
_System.IO.FileMode.Open,
_System.IO.FileAccess.Read,
_System.IO.FileShare.ReadWrite,
_System.Text.Encoding.GetEncoding("Shift-JIS"))
FileMode.Openで既存ファイルのを呼び出す
FileAccess.Read,で自作ソフト側からは読み取りのみ行う
FileShare.ReadWriteで他のプロセスからは読み書きを許可する
という理解であっていますか?
参考
http://msdn.microsoft.com/ja-jp/library/4z36sx0f(v=vs.80).aspx
http://msdn.microsoft.com/ja-jp/library/system.io.fileshare(v=vs.80).aspx