Подскажите пожалуйста, как осуществялется работа с файлами в архивах?
Например, как работают программы, которые умеют сразу напрямую читать информацию из файла, находящегося в архиве? Это такие программ как book-ридеры, которые читают текстовые файлы из архивов и загружают их.
Просто необходим принцип работы.
Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.
P.S. Для программирования используется C# и библиотека ICSharpCode.SharpZipLib.
(В архиве всегда только один файл и имя ег известно).
А>Просто необходим принцип работы. А>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.
Обычно в темповую директорию записывается файл из архива и с ним работаешь уже как хочешь. Например, если хочешь открыть этот файл в ворде — это самый разумный способ.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Работа с файлами в архиве
От:
Аноним
Дата:
12.12.06 15:16
Оценка:
Здравствуйте, vitaly_spb, Вы писали:
А>>Просто необходим принцип работы. А>>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.
_>Обычно в темповую директорию записывается файл из архива и с ним работаешь уже как хочешь. Например, если хочешь открыть этот файл в ворде — это самый разумный способ.
Там просто в архиве файлик от 500Mb до 1Gb и более, его разархивация идет около полу-часа, ну и потом еще его парсинг минут 20, а таких файлов одновременно обрабатывается 3-4 штуки.
Может все-таки возможно как-то без обычной архивации обойтись?
P.S. В архиве находится лог-файл, который нужно пропарсить. Парсер уже написан и работает отлично, нужно просто сделать возможность работы с архивами, чтобы он лог-файл брал прямо из архива и парсил.
А>Там просто в архиве файлик от 500Mb до 1Gb и более, его разархивация идет около полу-часа, ну и потом еще его парсинг минут 20, а таких файлов одновременно обрабатывается 3-4 штуки. А>Может все-таки возможно как-то без обычной архивации обойтись?
А>P.S. В архиве находится лог-файл, который нужно пропарсить. Парсер уже написан и работает отлично, нужно просто сделать возможность работы с архивами, чтобы он лог-файл брал прямо из архива и парсил.
Может проще лог-файл побить на много частей и в несколько потоков пустить разархивацию части -> парсинг части?
...Ei incumbit probatio, qui dicit, non qui negat...
Re[4]: Работа с файлами в архиве
От:
Аноним
Дата:
12.12.06 15:36
Оценка:
Здравствуйте, vitaly_spb, Вы писали:
А>>Там просто в архиве файлик от 500Mb до 1Gb и более, его разархивация идет около полу-часа, ну и потом еще его парсинг минут 20, а таких файлов одновременно обрабатывается 3-4 штуки. А>>Может все-таки возможно как-то без обычной архивации обойтись?
А>>P.S. В архиве находится лог-файл, который нужно пропарсить. Парсер уже написан и работает отлично, нужно просто сделать возможность работы с архивами, чтобы он лог-файл брал прямо из архива и парсил.
_>Может проще лог-файл побить на много частей и в несколько потоков пустить разархивацию части -> парсинг части?
К сожалению это не возможно, так как архив с логом, который я обрабатываю, приходит ко-мне уже в готовом виде, целым файлом.
А>К сожалению это не возможно, так как архив с логом, который я обрабатываю, приходит ко-мне уже в готовом виде, целым файлом.
Я давно с ICSharpCode.SharpZipLib работал, уже не помню. Тебе стоит поискать методы для чтения в буфер, обрабатывая соотв. эти куски, тогда не нужно сохранения. Держать в памяти весь гигабайт, конечно, недопустимо.
...Ei incumbit probatio, qui dicit, non qui negat...
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте!
А>Подскажите пожалуйста, как осуществялется работа с файлами в архивах? А>Например, как работают программы, которые умеют сразу напрямую читать информацию из файла, находящегося в архиве? Это такие программ как book-ридеры, которые читают текстовые файлы из архивов и загружают их.
А>Просто необходим принцип работы. А>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.
А>P.S. Для программирования используется C# и библиотека ICSharpCode.SharpZipLib. А>(В архиве всегда только один файл и имя ег известно).
А>Спасибо! А>Удачи!
ZipInputStream позиционируешь на нужную ZipEntry и далее работаешь с ним как с обычным потоком (то есть в этом потоке будет нужный тебе лог-файл).