Я пытаюсь прочитать кодированный файл UTF8 (.torrent). В файле есть раздел «штук». Непосредственно следуя этому, это длина текста, содержащего последовательность хэшей SHA1. Файл сообщает длину (скажем, 130100) для чтения, но при чтении я заканчиваю передачу EOF.Разница в размере при чтении кодированного файла UTF8
Я не уверен, почему это происходит. Файлы хороши (я проверил их с существующими торрент-клиентов, и я попробовал несколько из них с последовательными результатами) и я читаю их с этим:
string contents = string.Empty;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)
{
using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))
{
contents = reader.ReadToEnd();
}
}
parse(contents);
Однако, это, очевидно, не за работой. Я читаю файл неправильно, или я храню его в строке неправильно, прежде чем пытаться его разобрать? Кажется, что это только ошибка, когда он читает символы за пределами обычного диапазона читаемых строк.
Откуда вы знаете, что читаете EOF? Исправлено ли 'ReadToEnd' исключение? Если да, то? –
Почему вы не печатаете позицию файла после записи длины, а затем проверяете оставшуюся длину в шестнадцатеричном редакторе? Затем вы увидите, правильный ли файл (и, следовательно, ваш код неправильный). – AndiDog
@ Майкл Петротта. Виноват; Я должен уточнить: я не читаю переданный EOF, но данная длина из торрент-файла для «штук» проходит мимо длины оставшейся части содержимого, которое я прочитал из файла. –