Работа с файлами в архиве
От: Аноним  
Дата: 12.12.06 13:13
Оценка:
Здравствуйте!

Подскажите пожалуйста, как осуществялется работа с файлами в архивах?
Например, как работают программы, которые умеют сразу напрямую читать информацию из файла, находящегося в архиве? Это такие программ как book-ридеры, которые читают текстовые файлы из архивов и загружают их.

Просто необходим принцип работы.
Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.

P.S. Для программирования используется C# и библиотека ICSharpCode.SharpZipLib.
(В архиве всегда только один файл и имя ег известно).

Спасибо!
Удачи!
Re: Работа с файлами в архиве
От: vitaly_spb Россия  
Дата: 12.12.06 14:51
Оценка:
А>Просто необходим принцип работы.
А>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.

Обычно в темповую директорию записывается файл из архива и с ним работаешь уже как хочешь. Например, если хочешь открыть этот файл в ворде — это самый разумный способ.
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Работа с файлами в архиве
От: Аноним  
Дата: 12.12.06 15:16
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

А>>Просто необходим принцип работы.

А>>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.

_>Обычно в темповую директорию записывается файл из архива и с ним работаешь уже как хочешь. Например, если хочешь открыть этот файл в ворде — это самый разумный способ.


Там просто в архиве файлик от 500Mb до 1Gb и более, его разархивация идет около полу-часа, ну и потом еще его парсинг минут 20, а таких файлов одновременно обрабатывается 3-4 штуки.
Может все-таки возможно как-то без обычной архивации обойтись?

P.S. В архиве находится лог-файл, который нужно пропарсить. Парсер уже написан и работает отлично, нужно просто сделать возможность работы с архивами, чтобы он лог-файл брал прямо из архива и парсил.

Спасибо!
Удачи!
Re[3]: Работа с файлами в архиве
От: vitaly_spb Россия  
Дата: 12.12.06 15:27
Оценка:
А>Там просто в архиве файлик от 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. В архиве находится лог-файл, который нужно пропарсить. Парсер уже написан и работает отлично, нужно просто сделать возможность работы с архивами, чтобы он лог-файл брал прямо из архива и парсил.


_>Может проще лог-файл побить на много частей и в несколько потоков пустить разархивацию части -> парсинг части?


К сожалению это не возможно, так как архив с логом, который я обрабатываю, приходит ко-мне уже в готовом виде, целым файлом.
Re[5]: Работа с файлами в архиве
От: vitaly_spb Россия  
Дата: 12.12.06 16:03
Оценка:
А>К сожалению это не возможно, так как архив с логом, который я обрабатываю, приходит ко-мне уже в готовом виде, целым файлом.

Я давно с ICSharpCode.SharpZipLib работал, уже не помню. Тебе стоит поискать методы для чтения в буфер, обрабатывая соотв. эти куски, тогда не нужно сохранения. Держать в памяти весь гигабайт, конечно, недопустимо.
...Ei incumbit probatio, qui dicit, non qui negat...
Re: Работа с файлами в архиве
От: anton_t Россия  
Дата: 12.12.06 16:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте!


А>Подскажите пожалуйста, как осуществялется работа с файлами в архивах?

А>Например, как работают программы, которые умеют сразу напрямую читать информацию из файла, находящегося в архиве? Это такие программ как book-ридеры, которые читают текстовые файлы из архивов и загружают их.

А>Просто необходим принцип работы.

А>Необходимо ли самому расспаковывать файл из архива, а потом читать, или же можно сразу же его читать из архива, а система сама сделает что нужно.

А>P.S. Для программирования используется C# и библиотека ICSharpCode.SharpZipLib.

А>(В архиве всегда только один файл и имя ег известно).

А>Спасибо!

А>Удачи!

ZipInputStream позиционируешь на нужную ZipEntry и далее работаешь с ним как с обычным потоком (то есть в этом потоке будет нужный тебе лог-файл).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.