У нас есть простой формат двоичного файла для кэширования данных в нашем приложении (C# .NET Windows App). Формат в основном является коротким, который указывает тип объекта, за которым следует указатель (строка) для идентификатора объекта, а затем любые объектно-ориентированные данные (любые строки). Мы хотим иметь возможность хранить много объектов в одном файле (> 10000), но в определенных ситуациях загружать только по требованию. Решение состоит в том, чтобы сохранить индекс расположения объектов в файле - поэтому, когда мы начинаем писать новый объект, мы записываем позицию в потоке файла, с которого начинается объект. Когда мы хотим загрузить этот объект, мы используем это индексированное местоположение для загрузки релевантных данных. Это прекрасно работает.Загрузка определенного раздела сжатого потока файлов
Однако, если мы хотим сжать файл, будет ли этот метод по-прежнему возможен? Я не слишком горячий, как работает сжатие, и особенно класс GZipStream (System.IO.Compression), который мы планируем использовать. Насколько я понимаю, этот класс не поддерживает свойство Seeking или Position. Будет ли все еще возможно использовать Seek и Position основного FileStream (я предполагаю, что нет)? В принципе, возможно ли иметь сжатый файл, который мы можем выборочно загружать, если да, то как это сделать?
Спасибо,
Стив