• 締切済み

排他ロックが掛かっているファイルを読み込む

排他ロックが掛かっている(別のプロセスが使用している) テキストファイルを読み込みたいのですが、 System.IO.FileStreamを実行した後に、IOExceptionエラーが発生し、 読み込みができません。 System.IO.FileStreamにはこだわってませんので、 排他ロックが掛かっているテキストファイルを読み込む方法を ご存知の方は、ご教授頂けませんでしょうか。 宜しくお願いします。 <ソースコード> 'ファイルパス wFullPath = "\\XXX.XXX.XXX.XXX\TEXT\TEST.TXT" (XXX.XXX.XXX.XXX:IPアドレス) 'ファイルを開く Dim fs As New System.IO.FileStream(wFullPath, _ System.IO.FileMode.Open, _ System.IO.FileAccess.ReadWrite, _ System.IO.FileShare.ReadWrite) 'FileStreamを基にしたStringReaderのインスタンスを作成 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding("shift_jis") Dim sr As New System.IO.StreamReader(fs, enc) 'ファイルの内容をすべて読み込む Dim s As String = sr.ReadToEnd() <開発環境> 言語:VB.NET Microsoft Visual Studio 2008 Microsoft .NET Framework Version 3.5 SP1

みんなの回答

noname#159916
noname#159916
回答No.3

全然詳しくないですが。 ロックかけてる人が「リードもライトも許可してない」ので リードのみでも許されない、という事では。 そうなら、ロックかけてる人が「リードは許可する」にでも変更しない限り無理かと。 http://dobon.net/vb/dotnet/file/fileshare.html

littleboy_peace
質問者

お礼

回答ありがとうございます。 確かにumamimiさんのおっしゃる通りだと思います。 ロックをかけているのは他社で開発したシステムなので、 開発元がOKを出さないと難しいです。

回答No.2

こんばんは。 あれ? ダメですか・・・? >System.IO.FileShare.Read これは元のままでよさげ。 >IOExceptionエラーが発生しました。 派生クラスじゃなくて? エラーコードとエラーメッセージはなんて出てますか?

littleboy_peace
質問者

お礼

<エラーコード> 57 <エラーメッセージ> 別のプロセスで使用されているため、プロセスはファイル '\\\XXX.XXX.XXX.XXX\TEXT\TEST.TXT' にアクセスできません。 と出ています。

回答No.1

こんにちは。 単に読み込みだけなら、 ReadWrite じゃなくて Read にしては?

littleboy_peace
質問者

お礼

早速の返事ありがとうございます。 試してみましたが、結果は同じでした。 IOExceptionエラーが発生しました。 (以下のソースを実行) 'ファイルを開く Dim fs As New System.IO.FileStream(wFullPath, _ System.IO.FileMode.Open, _ System.IO.FileAccess.Read, _ System.IO.FileShare.Read)

関連するQ&A

専門家に質問してみよう