• ベストアンサー

【C#】別プロセスがロックかけているファイルの読込

別プロセスが更新を行っているファイルを読み取り専用で読み込みたいのですがIOExceptionがでて読み込めません。 ■エラーメッセージ 別のプロセスで使用されているため、プロセスはファイル '※ファイル名※' にアクセスできません。 ■エラーがおきているところ StreamReader sr = new StreamReader(@tempFile, Encoding.Default); ノートパットではエラーなしで開けました。サクラエディタではロックを取得できませんでした。のメッセージは出ましたが中身をみることはできました。 どうかご教示の程よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

FileShareを引数に持つFileStreamのコンストラクタで明示的に開くことになるかと。 MSDN: FileStream コンストラクター (String, FileMode, FileAccess, FileShare) (System.IO) http://msdn.microsoft.com/ja-jp/library/5h0z48dh.aspx StreamReaderはその名のとおり,Streamから文字列を読み込むためのクラスです。 ファイル名を指定できるコンストラクタはありますが,内部ではStreamを用意しています。 細かい制御をするには,元となるStream自体の開き方を変えるしかないです。

kudakuda1211
質問者

お礼

おそくなりました、解決できました。 ありがとうございます

関連するQ&A

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • すでにファイルが開かれている時のエラー回避

    VB2010で、ファイルを開いていると下記のコードでエラーがでます。 Dim SR As New System.IO.StreamReader(AppPath & "諸元一覧.csv", System.Text.Encoding.Default) 「諸元一覧.csv」ファイルを閉じてください。 とメッセージを出し、ExitSubしたいのですが、 どういうコードにすればよいのでしょうか。 教えてください。よろしくお願いいたします。

  • 2008で「別のプロセスで使用されているため、プロセスはファイル'○○○' にアクセスできません

    VB2008初心者です。 System.IO.StreamReaderを使って、あるテキストファイルを1行ずつ読み込み、それを配列に格納し、配列データを修正したうえで、次にSystem.IO.StreamWriterを使って同じテキストファイルに配列のデータを書き込むというプログラムを組んでいます。 ところが、ビルドすると「別のプロセスで使用されているため、プロセスはファイル 'C:\Management Student\personal.txt' にアクセスできません。」というメッセージが表示されてしまいます。 このメッセージの原因と対処方法をご存知の方、教えていただけないでしょうか。

  • ComoBoxでテキストファイルの内容をどうやれば読み込みできますか?

    C#でプログラムを開発しております。 問題は ComonBoxを使って テキストファイルにあるデータをどうやれば読取できますか? 例えば;テキストファイルに 1 2 3 4 四行で、ComoBoxでこの四行を見れるようにしたいですけど。 今は  StreamReader sr = new StreamReader(@"c:\\11.text", Encoding.Default); ComoBox.Items.Add()=sr.readline();を使って失敗しました。エラーはStringの値をIntに変換できないだと提示した。 お願いします。

  • ファイルをロックしているプロセスを特定する方法

    Windows Vistaを使用しています。 あるファイルを削除しようとしたところ、  別のプログラムがこのファイルを開いているので、操作を完了できません というエラーメッセージが出ます。 どのプロセスがこのファイルを操作しているのかを知りたいのですが、どうすればよいでしょうか? おそらく、何かのプロセスがこのファイルをロックしているものと考えています。 Windowsの標準機能で解決できるならその方法を、別のフリーソフトを利用すればわかるのならその方法を教えてください。 どのプロセスかが分かれば、そのプロセスを強制終了させればファイルの削除が行えると考えています。 よろしくお願いします。

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

    排他ロックが掛かっている(別のプロセスが使用している) テキストファイルを読み込みたいのですが、 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

  • c#で(",")区切りのcsvファイルから読み込みを行うには?

    駆け出しの初心者です。 以前c言語を少々勉強していてcsvファイルの読み込み、書き出しを練習していたのですが、最近c#を使うようになり、その便利さに圧倒されております。 今回c#で読み込みたいcsvファイルは以下のようになっております "abc","123","あいうえお" ただのカンマ区切りであれば読み込みは簡単ですが、 上記のようにダブルクオーテーションでそれぞれの文字列が囲まれている場合に文字列だけを読み込み、配列に代入していくのに何かスムーズな方法はありませんでしょうか? ちなみに現在単純にカンマ区切りのcsvファイルを読み込むコードを 書いた所ですので、載せておきます これをいじってスムーズにいければうれしいのですが、いかがでしょうか? private void LoadData() { string path = "Data.csv"; string delimStr = ",";//区切り文字 char[] delimiter = delimStr.ToCharArray(); string[] strData;//分解後の文字用変数 string strLine;//1行分のデータ Boolean fileExists = System.IO.File.Exists(path); if (fileExists) { System.IO.StreamReader sr = new System.IO.StreamReader( path, System.Text.Encoding.Default); while (sr.Peek() >= 0) { strLine = sr.ReadLine(); strData = strLine.Split(delimiter); DataSet.DataTable.AddDataTableRow( DateTime.Parse(strData[0]), strData[1],    strData[2], int.Parse(strData[3]), strData[4]); } sr.Close(); } } いつも丁寧な回答で協力してくれる皆様には心から感謝しております。 どうぞよろしくお願いします。

  • C#におけるファイル読み取りの文字化け

    開発初心者です。 //Shift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader(@txtShiteiFile.Text, System.Text.Encoding.GetEncoding(932)); //内容を全て読み込む string textAll = sr.ReadToEnd(); 以上の関数を使ってテキストファイル上の文字を読み取りしているのですが、 textAll 変数に入ったときに文字化けしています。 また、テキストファイルによっては文字化けしないときもあります。 この場合、どのような対処をすればよいのでしょうか?

  • C#での文字置換について

    hoge.txt -------------- #abc_1 111111111 222222222 333333333 #abc_2 111111111 222222222 333333333 #abc_3 ... -------------- StreamReader sr = new StreamReader("hoge.txt", Encoding.GetEncoding("UTF-8")); sr.ReadToEnd(); でファイルを読み込み#abc_1から#abc_2の間の 111... 222... 333... というのを削除して 出力したいのですが分かりません。 (同様に#abc_2から#abc_3の間も削除します) つまり出力は #abc_1 #abc_2 #abc_3 となるように。 宜しくお願いします

  • 【C#】StreamReaderクラスのエンコード

    こんばんは。 .NetFramework1.1のStreamReaderクラスを使用して、csvファイルを読み込んでいるのですが、 エンコードでShift_JISを指定しても、"€"などの環境依存文字がそのまま取得されてしまいます。 Shift_JISに存在しない文字は文字化けして取得されるものだと思っていましたが、違うのでしょうか? DBの文字コードがShift_JISなのでこのままDBへ渡すとエラーになってしまい困っています。 ご教授下さい。宜しくお願いします。 -- ソース ---------------------------------------------- StreamReader sr = new StreamReader(path,Encoding.GetEncoding("Shift_JIS")); string str = sr.ReadLine();