Как прочитать файл, начиная с определенной точки курсора в C #? - PullRequest
2 голосов
/ 08 декабря 2010

Я хочу прочитать файл, но не в начале файла, а в определенной точке файла.Например, я хочу прочитать файл после 977 символов после начала файла, а затем прочитать следующие 200 символов одновременно.Спасибо.

Ответы [ 4 ]

5 голосов
/ 08 декабря 2010

Если вы хотите прочитать файл как текст, пропуская символы (не байты):

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);
}
2 голосов
/ 29 мая 2016

вы можете использовать Linq и конвертировать массив символов в строку.

добавить эти пространства имен:

using System.Linq;
using System.IO;

, затем вы можете использовать это, чтобы получить массивсимволы начальный индекс а целых 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);

Удачи;

1 голос
/ 09 декабря 2010

, если вы хотите читать определенные типы данных из файлов 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
        }
1 голос
/ 08 декабря 2010
using (var fileStream = System.IO.File.OpenRead(path))
{
    // seek to starting point
    fileStream.Position = 977;

    // read
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...