6

、、StreamReaderを開くにはどうすればよいですか?FILE_SHARE_READFILE_SHARE_WRITEFILE_SHARE_DELETE


同じ質問、少し拡大

StreamReader別のプロセスがファイルを読み取ることができるように共有オプションを使用して、エンコードされたテキストファイルを読み取ることができるようにを開くにはどうすればよいですか?

エンコードされたテキストファイルを読み取ることができるように、共有オプションを使用してを開き、StreamReader別のプロセスがファイルを読み取っている間にファイルを変更できるようにするにはどうすればよいですか?

StreamReaderエンコードされたテキストファイルを読み取ることができるように、共有オプションを使用してを開き、別のプロセスがファイルの読み取り中にファイルを削除できるようにするにはどうすればよいですか?


同じ質問、もう少し拡張

.NET Frameworkクラスライブラリには、。というクラスがありStreamReaderます。これは「テキスト」を読み取るように設計された唯一のクラスであり、それが抽象基本TextReaderクラスの子孫である理由です。を使用TextReader/StreamReaderすると、開こうとしているファイルで使用されているエンコーディングを指定でき、ファイルをデコードしてStringsテキストを返すことができます。

StreamReader:でファイルを開いたら

var sr = new StreamReader(path);

ファイルはロックされており、他のプロセスはファイルを変更または削除できません。私が必要としているのは、FileStreamクラスのFileShare列挙に相当するものです。

  • なし:現在のファイルの共有を拒否します。(このプロセスまたは別のプロセスによる)ファイルを開く要求は、ファイルが閉じられるまで失敗します。
  • 読み取り":読み取りのためにファイルを後で開くことを許可します。このフラグが指定されていない場合、(このプロセスまたは別のプロセスによる)読み取りのためにファイルを開く要求は、ファイルが閉じられるまで失敗します。ただし、このフラグが指定した場合でも、ファイルにアクセスするには追加の権限が必要になる場合があります。
  • 書き込み:書き込みのためにファイルを後で開くことができます。このフラグが指定されていない場合、(このプロセスまたは別のプロセスによる)書き込みのためにファイルを開く要求は、ファイルが閉じられるまで失敗します。ただし、このフラグが指定されている場合でも、ファイルにアクセスするには追加のアクセス許可が必要になる場合があります。
  • ReadWrite:読み取りまたは書き込みのためにファイルを後で開くことができます。このフラグが指定されていない場合、(このプロセスまたは別のプロセスによって)読み取りまたは書き込みのためにファイルを開く要求は、ファイルが閉じられるまで失敗します。ただし、このフラグが指定されている場合でも、ファイルにアクセスするには追加のアクセス許可が必要になる場合があります。
  • 削除:ファイルの後続の削除を許可します。

明らかな理由で、私は-を使用できないことを除いて、FileStream-を使用する必要がありStreamReaderます。

でを開くにはどうすればよいStreamReaderですFileShare.ReadWrite | FileShare.Deleteか?

4

2 に答える 2

11

StreamReader ストリームを取ることができるコンストラクターがあります。したがって、文字列パスを使用するコンストラクターを使用する代わりに、最初に必要なFileStreamオプションを使用してを作成し、次にそれをコンストラクターに渡しFileStreamますStreamReader

于 2012-09-18T14:01:08.273 に答える
6

FileShare.ReadWriteでStreamReaderを開くにはどうすればよいですか?FileShare.Delete?

ストリームの問題を解決したら、リーダーは簡単です。

var fs = new FileStream(fileName, FileMode.Open, FileShare.ReadWrite|FileShare.Delete);
var sr = new StreamReader(fs);

using() { }そしてもちろん、それはブロックに包まれるべきです。

于 2012-09-18T14:01:32.213 に答える