Как говорили другие, вы не правильно сравниваете правильные вещи.То, как вы хотите сравнить вещи, которые вы сравниваете, зависит от формата данных, которые вы читаете в BinaryReader, и типа «key1».
В своем описании вы говорите, что «key1» - этоint, но затем попытайтесь преобразовать его как строку.Я просто собираюсь предположить, что это INT.Вы можете оставить комментарий, если это не так.
Формат данных в вашем файле также не понятен из описания.Я собираюсь предположить, что это целые.Если его нет, добавьте комментарий.Чтение целого числа выглядит следующим образом:
int testVal = br.ReadInt32();
Это дает вам целое число, и, поскольку оба являются целыми числами, вы можете просто сравнить как целые числа:
if(testVal == key1)
{/*do your other stuff*/}
Вероятно, лучше выполнить цикл, пока неконец файла, а не цикл по каждому байту, что-то вроде:
while(br.BaseStream.Position != br.Basestream.Length)
Объединение его может выглядеть примерно так:
while(br.BaseStream.Position != br.Basestream.Length)
{
int testVal = br.ReadInt32();
if(testVal == key1)
{/*do your other stuff*/}
}
Еще одно примечание: потому что вы «новичок»Используя BinaryReader каждый раз, когда вызывается этот метод, и BinaryReader закрывается в «если», вы можете рассмотреть using
вокруг вашего BinaryReader и объявить его там же.Это обеспечит правильное удаление BinaryReader в случае исключения.Приведенный ниже вариант позволит надлежащим образом избавиться от BinaryReader, но при этом поймать любое исключение (а также его неодобрение, чтобы поймать общее исключение):
try
{
using(var br = new BinaryReader(File.OpenRead(element.FileName)))
{
while(br.BaseStream.Position != br.Basestream.Length)
{
if(br.ReadInt32() == key1)
{/*do your other stuff*/}
}
}
}
catch(Exception ex)
{
}
Надежда, которая помогает.