2

ファイルを読みたいのですが、ファイルの最初からではなく、ファイルの特定のポイントで読みたいのです。たとえば、ファイルの先頭から977文字後にファイルを読み取り、次の200文字を一度に読み取りたいとします。ありがとう。

4

4 に答える 4

6

ファイルをテキストとして読み取りたい場合は、文字(バイトではなく)をスキップします。

using (var textReader = System.IO.File.OpenText(path))
{
    // read and disregard the first 977 chars
    var buffer = new char[977];
    textReader.Read(buffer, 0, buffer.Length);

    // read 200 chars
    buffer = new char[200];
    textReader.Read(buffer, 0, buffer.Length);
}

(文字ではなく)特定のバイト数をスキップしたいだけの場合:

using (var fileStream = System.IO.File.OpenRead(path))
{
    // seek to starting point
    fileStream.Seek(977, SeekOrigin.Begin);

    // read 200 bytes
    var buffer = new byte[200];
    fileStream.Read(buffer, 0, buffer.Length);
}
于 2010-12-08T20:51:18.857 に答える
2

Linqを使用して、charの配列をstringに変換できます。

これらの名前空間を追加します:

using System.Linq;
using System.IO;

次に、これを使用して、テキストファイルからaからbまでの文字のインデックスを開始する文字の配列を取得できます。

char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(a).Take(b).ToArray();

次に、文字列を作成できます。これには、cの連続文字が含まれます。

string r = new string(c);

たとえば、私はファイルにこのテキストを持っています:

こんにちは元気ですか ?

私はこのコードを使用します:

char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(6).Take(3).ToArray();               
string r = new string(c);
MessageBox.Show(r);

そしてそれは示しています:どのように

方法2

非常に単純:部分文字列メソッドを使用

string s = File.ReadAllText(FilePath);
string r = s.Substring(6,3);
MessageBox.Show(r);

幸運を ;

于 2016-05-29T15:37:42.350 に答える
1

ファイルから特定のデータ型を読み取りたい場合System.IO.BinaryReaderは、最良の選択です。ファイルエンコーディングの使用についてよくわからない場合

        using (var binaryreader = new BinaryReader(File.OpenRead(path)))
        {
            // seek to starting point
            binaryreader.ReadChars(977);
            // read
            char[] data = binaryreader.ReadChars(200);
            //do what you want with data
        }

それ以外の場合、ソースファイルサイズの文字サイズが1バイトまたは2バイトであることがわかっている場合

        using (var binaryreader = new BinaryReader(File.OpenRead(path)))
        {
            // seek to starting point
            binaryreader.BaseStream.Position = 977 * X;//x is 1 or 2 base on character size in sourcefile
            // read
            char[] data = binaryreader.ReadChars(200);
            //do what you want with data
        }
于 2010-12-08T21:17:22.383 に答える
1
using (var fileStream = System.IO.File.OpenRead(path))
{
    // seek to starting point
    fileStream.Position = 977;

    // read
}
于 2010-12-08T20:53:55.143 に答える