ReadString
ReadString у
BinaryReader
ожидает формат
Write(string):
сначала длина в 7-bit кодировке, затем UTF-8.
Для "abcde" первый байт потока -
5, а не код буквы "a".
Синтаксис
string text = reader.ReadString();
Пример
Давайте прочитаем строку после Write("abcde"):
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write("abcde");
ms.Position = 0;
BinaryReader reader = new BinaryReader(
ms, Encoding.UTF8, leaveOpen: true);
string res = reader.ReadString();
Console.WriteLine(res);
reader.Dispose();
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверим первый байт длины:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write("abcde");
byte[] data = ms.ToArray();
Console.WriteLine(data[0]);
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
5
Пример
Давайте прочитаем две строки подряд:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write("abcde");
writer.Write("12345");
ms.Position = 0;
BinaryReader reader = new BinaryReader(
ms, Encoding.UTF8, leaveOpen: true);
string first = reader.ReadString();
string second = reader.ReadString();
Console.WriteLine(first);
Console.WriteLine(second);
reader.Dispose();
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
"abcde"
"12345"
Смотрите также
-
Write,
запись строки с длиной -
ReadBytes,
сырые байты без длины -
Stream,
общий поток байтов -
MemoryStream,
буфер для проверки