2009-09-07 9 views
29

私はFile.ReadAllTextを使っていくつかのcsvを取得していますが、Excelでファイルを閉じるのを忘れるたびに、アプリケーションは例外をスローしますファイルにアクセスします。他のアプリケーションによってロックされているテキストファイルを読み取る最も簡単な方法

は(私がReadAllTextでREADがかなり明確思わ意味、私には狂気のようだ)

私はFile.Openは、すべての添えものでありますが、「doesnの「中間」の方法があることを知っていますバッファとchar配列を使いこなすことが必要ですか?

はい、私はちょうど最初に私に答えを与える:)

答えて

45

私はあなただけで次のことをしたいと思う:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
using (var textReader = new StreamReader(fileStream)) 
{ 
    var content = textReader.ReadToEnd(); 
} 

FileAccess.Readパラメータは、あなただけのファイルを読みたいことを示すために、重要なものです。もちろん、これを行う場合でも、ファイルはの読み取り共有モードでExcelで開く必要があります(.NETのFileShare参照)。私はテストしていないので、Excelがこれを行うことを保証することはできませんが、私は期待しています。

+0

ありがとうございます、ファイル全体から文字列全体を取得するために{}の間に置くことができる最も短いものは何ですか? (私は怠け者だと言った) – Benjol

+0

@Benjol:問題ありません。すべてのテキストを読むためのコードで更新されました。 – Noldorin

+0

@ Noldorin、ありがとう。それは欠けていたリンクでした。私はFileStreamで利用可能なすべてのメソッドを見て、理解できませんでした。 – Benjol

0

をあなたは、使用中のファイルを開くために、あなたのファイル共有フラグを指定したい場合は、怠け者だ、そう私を否決File.Open()で止まってしまいます。

+1

ファイルを開くのはExcelなので、OPはこれを制御できません。彼はExcelが読み取り共有モードでそれを開き、それを読み取り専用で開くことを願っています。 – Noldorin

関連する問題