Метод Read
StreamReader.Read без аргументов
возвращает int: код символа или
-1 в конце. Перегрузка с
char[] возвращает число
прочитанных символов. Строки удобнее
снимать через
ReadLine.
Есть ReadAsync.
Синтаксис
int code = reader.Read();
int count = reader.Read(buffer, index, count);
Пример
Давайте прочитаем первый символ
"abcde":
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var w = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
w.Write("abcde");
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
int res = reader.Read();
Console.WriteLine(res);
}
}
Результат выполнения кода:
97
Пример
Давайте прочитаем три символа в массив:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var w = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
w.Write("abcde");
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
char[] buf = new char[5];
int res = reader.Read(buf, 0, 3);
Console.WriteLine(res);
}
}
Результат выполнения кода:
3
Пример
Давайте дочитаем до конца - вернётся
-1:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var w = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
w.Write("a");
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
reader.Read();
int res = reader.Read();
Console.WriteLine(res);
}
}
Результат выполнения кода:
-1
Смотрите также
-
метод
Peek,
который смотрит символ без сдвига -
метод
ReadToEnd,
который читает остаток целиком -
StreamReader,
класс, где объявленRead -
MemoryStream,
источник байтов в примерах