2013-07-01 1 views
0

Моя программа создает журнал информации каждый час, когда система работает, которая содержит различные данные, такие как время доступа, передача данных и любые возникшие ошибки/предупреждения. к сожалению, эти файлы журналов могут быть от 10 000 КБ до 25 000 КБ, поэтому я начал их застегивать отдельно, как только они составят не менее 24 часов, таким образом, моя система имеет только 24 разархивированных файла журнала в любой момент времени.Доступ к файлу с застежкой-молнией без распаковки?

Проблема, которую мне нужно решить, заключается в том, что частью этого программного обеспечения является окно «Диагностика», в котором пользователь может загружать файлы журналов из выбранного диапазона дат в зависимости от времени создания файла и просматривать его содержимое в удобном для чтения формат. Я понимаю, что для того, чтобы файлы отображались в их поиске, должно быть исключение, позволяющее также проверять .zip, но я не могу получить доступ к каким-либо данным файла, чтобы увидеть, попали ли указанные файлы .zip в диапазон дат.

Мой вопрос: есть ли у меня способ получить доступ к информации о zipped-файле (и в дальнейшем ее содержимое) без необходимости разархивировать файлы, выполнять поиск, повторно застегивать файлы? кажется, слишком много работы, чтобы разархивировать сто или более файлов, если только 1 или 2 попадают в диапазон дат.

+0

Использование времени создания файла/изменения времени ... –

+0

Это может помочь прочитать, что делает zip-файл – Jonesopolis

+1

, вы можете видеть файл заголовка zip (имена файлов и размер), но для получения данных из определенного файла, вам нужно разархивировать –

ответ

1

Вы должны добавить временную метку к имени файла для каждого заархивированного файла.

В общем случае, когда вы застегиваете файл, вы помещаете фактические данные файла в формат, который нечитабелен. Большинство алгоритмов zipping (имейте в виду, что их очень много) работают на очень взломанном уровне, поэтому вам действительно нужно разархивировать файлы, чтобы получить исходные данные. (Нет такой вещи, как бесплатный обед.)

К счастью, файл не просто файл! Потому что вы совершенно правы, нужно было читать файл, чтобы делать что-то с ним, было бы ужасно! Представьте, что вам нужно искать файловую систему, если вам нужно было прочитать каждый файл, чтобы выяснить, где он находится в каталоге.

Существует несколько способов доступа к метаданным, связанным с вашим файлом, в зависимости от того, в какой именно системе вы находитесь. Например, в машинах в стиле unix, используя команду ls -l, вы получите последнюю отредактированную информацию.

Таким образом, файлы журнала обычно имеют имена, начинающиеся с отметки времени по этой точной причине. Если вы хотите, чтобы ваши имена были хорошенькими, хотя, вероятно, путь к последней редактируемой дате.

1

Хорошая почтовая библиотека (например, SharpZipLib) должна позволять вам перебирать файлы, содержащиеся в архиве, без их извлечения. Это позволит вам запрашивать связанные даты файла. Например, используя вышеупомянутый SharpZipLib, вам просто нужно будет проверить свойство DateTime объектов ZipEntry, содержащихся в архиве.

+0

. Я бы сказал, что если вы на самом деле не занимаетесь распаковкой или распаковкой каких-либо файлов, то такая библиотека, как SharpZibLib, является серьезным излишеством. –

+0

по большей части не разрешено использовать не внутренние библиотеки. вопросы лицензирования, поскольку это программное обеспечение для некоммерческих организаций – DarthSheldon