Я использую двоичный файл для хранения измеренных данных некоторого продукта. Ранее продукт был единственным, теперь я должен иметь возможность сохранять/загружать больше типов продуктов.C# BinaryReader - данные, которые могут быть или не быть в двоичном файле
Я собираюсь сохранить дескриптор типа в начале файла, 1 байт должен быть абсолютно достаточным, будет только несколько типов (2, возможно, 3 или 4 в будущем).
Проблема в том, что мне все еще нужно иметь возможность загружать старые двоичные файлы без этого дескриптора. Вот мой старый код с комментариями, где я хочу, чтобы проверить наличие дескриптора, а затем принять решение о типе продукта, как это:
- Нет дескрипторе -> старый продукт
- Descriptor = ххх -> новый продукт xxx
Можно ли сохранить дескриптор в таком формате? Я думаю, что вызов reader.PeekChar()
- это только одна возможность из-за того, что вы не переходите к следующим байтам, но я не уверен, как его использовать в этом случае.
BinaryReader reader;
using (reader = new BinaryReader(File.Open(header.path, FileMode.Open, FileAccess.Read)))
{
// ...
// check presence of product type descriptor
// make a decision of type
// ...
DateTime measTime = DateTime.FromOADate(reader.ReadDouble());
double diameter = reader.ReadDouble();
double plusToler = reader.ReadDouble();
double minusToler = reader.ReadDouble();
}
Ваш исходный поток является обычным файлом и, следовательно, доступен для поиска, не так ли? Если да, то в чем проблема (временно) «переход к следующим байтам»? –
О, вы правы. Временного поиска мне не приходило. – Majak
Я использую фиктивный дескриптор для старых продуктов и отбрасываю его, когда обнаружено фиктивное значение. Это будет намного эффективнее, чем перемещение назад и вперед в файле. Оба метода будут работать – nicomp