22

FileStream を使用し、以下に示すオプションを使用して、C# 内でテキスト ファイルを開く必要があります。

var fileStream = new FileStream(filePath, 
                                FileMode.Open, 
                                FileAccess.Read, 
                                FileShare.Read, 64 * 1024,
                               (FileOptions)FILE_FLAG_NO_BUFFERING | 
                                  FileOptions.WriteThrough & FileOptions.SequentialScan);

テキスト ファイルには「1」または「0」が含まれており、結果を取得した後、テキスト ファイルの内容を文字列変数に割り当てます。ご参考までに、Windows がキャッシュからテキスト ファイルを読み取らないようにするために、上記のオプションが必要です。

System.IO.File.ReadAllText()

……もったいない。

私がこれまでに見た例には、バイトとバッファ(現時点で本当に取り組む必要がある領域)の操作が含まれているため、これらの要件を組み込んだ単純なサブを書いてくれる人が親切でしょうか。 .

ありがとう

4

4 に答える 4

32

たぶん次のようなもの:

    FileStream fileStream = new FileStream("[path]", FileMode.Open, FileAccess.Read, FileShare.Read, 64 * 1024,
        (FileOptions)0x20000000 | FileOptions.WriteThrough & FileOptions.SequentialScan);

    string fileContents;
    using (StreamReader reader = new StreamReader(fileStream))
    {
        fileContents = reader.ReadToEnd();
    }


    bool assignedvariable = Convert.ToBoolean(fileContents);

assignedvariable は、ファイルに 1 が含まれている場合は true を保持し、0 が含まれている場合は false を保持します。

これがすでに回答されている場合は申し訳ありませんが、人々はここに非常に速く投稿しています。

于 2013-01-03T09:02:39.933 に答える
17

StreamReaderを使用してストリームから読み取ることができます。

string contents;
using(var sr = new StreamReader(fileStream))
{
   contents = sr.ReadToEnd();
}
于 2013-01-03T08:54:15.010 に答える
5
File.ReadAllBytes

また

File.ReadAllText

どちらも理論的には Windows ファイル キャッシュを使用します。

これを読んで理解を深め、FILE_FLAG_NO_BUFFERING のいくつかの制限を確認し、同様のスタックオーバーフローの質問についてもこれを読んでください。

于 2013-01-03T09:03:46.230 に答える