2009-07-16 13 views
5

私は、別のアプリケーションが開いているファイルを読むためにC#アプリを書いています。あなたが推測する人もいるので、「ファイルが別のプロセスによって使用されている」ため、IOExceptionが発生します。私は少しFile.Open()を調整しようとしました。これは私の現在の試みです:Notepad.exeと同じようにファイルを開くフラグはありますか?

FileStream fsIn = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); 

(私はファイル共有フラグがその後、ファイルにアクセスしますが、私はとにかくそれを試してみましたが、他のプロセスのためのより多くの意味があることを知っている。)

何パズル

私はNotepad.exeがファイルを正常に開くことです。私がFileMonを掘り起こす前に、メモ帳のようにファイルを開く方法を知っていますか?ありがとう。

答えて

5

あなたはほとんどそれを持っています。あなたが実際にFileShare.ReadWriteをしたい:

FileStream fsIn = File.Open(fileName, 
          FileMode.Open, 
          FileAccess.Read, 
          FileShare.ReadWrite); 

FileShare.Readは、そのファイルへの書き込みから、他のプロセスを禁止します。 FileShare.ReadWriteはこれを可能にします。

書き込みは 書き込み用ファイルのその後の開放を可能にします。このフラグが でない場合、 ファイルを(このプロセスまたは別のプロセスでは )開いて開く要求は、 ファイルが閉じられるまで失敗します。ただし、この フラグが指定されていても、 ファイルにアクセスするには、さらに 権限が必要な場合があります。

ReadWrite は、 の読み取りまたは書き込みのためにファイルを開くことができます。このフラグが でない場合、 ファイルを読み書きする(この プロセスまたは別のプロセスによって)ファイルを開く要求は、ファイルが閉じられるまで、 に失敗します。ただし、 このフラグを指定しても、ファイルにアクセスするにはさらに のアクセス権が必要になる可能性があります( )。

これは私にとっても同様です。

-2

試してみてください。まあ

FileStream file = new FileStream(filename, FileMode.Open); 
+0

残念ながら、それはより良い動作しません!とにかくありがとう。 – Humberto

3

、あなたは小さなファイルを扱っている場合は、単なるテキストまたはバイナリファイルの

byte[] myfileContents = System.IO.File.ReadAllBytes(@"c:\aleagueoftheirmoan.mpg"); 

ため

string myFileContents = System.IO.File.ReadAllText(@"c:\daniellesteele.txt"); 

を使用しています。

+0

は、mpg:P –

+0

に+1を与えるように誘惑されましたが、誘惑されただけです。 –

+0

興味深いファイル名....:P – nstehr

1

他のプロセスが開いた後、メモ帳でファイルを開くことはできますか?共有が許可されていれば、ファイルを最初に所有していた人のことです。 MSDNから、次の例を参照してください。

もちろん
The following FileStream constructor opens an existing file and grants read-only access to other users (FileShare.Read). 

[C#] 
FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read); 

私は、OSの専門家ではないので、これは完全に間違っている可能性があります。あなたのプログラムで、その開放しながら、他のプログラムが、ファイルを変更できるように、この

FileStream fsIn = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

0

。 ファイルを開くと、IOException "ファイルが別のプロセスによって使用されています"が実行されません。

関連する問題