powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Архивация в 2010
10 сообщений из 10, страница 1 из 1
Архивация в 2010
    #37190499
mys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mys
Гость
Есть ли возможность в 2010 сгенерировать архив или встроенные средства годятся только для сжатия строк?
...
Рейтинг: 0 / 0
Архивация в 2010
    #37190849
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mys ,

Если под архивом подразумевается zip, rar, 7z и т.д., то можно, причём в любой версии Caché, используя $ZF(-1)/$ZF(-2) .
Если нужно просто сжимать большой объём данных, то есть классы %Stream.GblBinCompress и %Stream.GblChrCompress
...
Рейтинг: 0 / 0
Архивация в 2010
    #37191037
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-видимому, имелся в виду GZIP - новый параметр команды Open:док-яGZIP [=n] GZIP Compression: Specifies GZIP-compatible stream data compression. /GZIP or /GZIP=n (for nonzero values of n) enables compression on WRITE and decompression on READ. /GZIP=0 disables compression and decompression. /GZIP compression has no effect on I/O translation, such as translation established using /IOTABLE. This is because compression is applied after all other translation (except encryption) and decompression is applied before all other translation (except encryption).Попробовал записать файл с этим параметром. Как и ожидалось, получился корректный файл формата GZip, 7-zip его успешно распаковал (дело было под Виндою). Конечно, это не архивация, а всего лишь сжатие, зато не зависит от платформы и от того, какие архиваторы установлены.
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192013
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

если не сложно, примерчик освети пожалуйста ))
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192263
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007, пожалуйста. Создает 20Мб файл, сжатый до 20К.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
gzip  ;internal compression
	s fl=$s($zversion( 1 )= 3 :"/home/alex/mytest.gz",  1 :"c:\temp\mytest.gz")
	OPEN fl:("WNS":/GZIP= 1 ): 10  e  w !,"Can't create "_fl q
	k line for i= 1 : 1 : 64  set line(i)=$tr($j("", 32000 )," ",$C( 192 +i- 1 ))
	u fl
	for j= 1 : 1 : 10  for i= 1 : 2 : 63  w line(i),line(i+ 1 ),*- 99 
	c fl
	q
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192271
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл написать, что этот пример для Cache версии не ниже 2010.1, 8-бит. Под Unicode адаптировать можно, да мне не надо было.
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192369
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня следующий код работает и с Unicode (2011.1.FT1, в собственной локали Файл=UTF8):

set file=##class(%File).%New("test.gz")
do file.Open("WNS:/GZIP=1")
do file.WriteLine("This is a line of text")
do file.WriteLine("Это - строка текста в Caché")
do file.Flush()
do file.Close()
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192505
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
угу, спасиб теперь более менее кое что началось прорисовываться )))
эт получается можно сделать один файл
можно ли такое провернуть относительно группы файлов? чтоб в результате получился один архивный файл, состоящий из вложенных папок и файлов?
такое можн опровернуть средствами каше, не прибегая к стронним архиваторам?
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192509
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit, я генерацию текста имел в виду: $C(192+i-1) - символы явно не юникодовские :)
с текстовыми строками и у меня под Unicode работает.
Надо ещё смотреть, что делает метод Flash. Мне показалось существенной посылка *-99. Есть ещё вариант с *-3, но он под Linux не работает. А без явной команды *-99 файлы под Linux'ом пакуются неправильно.
...
Рейтинг: 0 / 0
Архивация в 2010
    #37192524
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007, без сторонних средств никак, т.к. GZIP - это именно сжатие, а не архивация. Функционал (и формат файла) аналогичен линуксовому gzip. В классическом Linux'е для архивации используют другую утилиту - tar.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Архивация в 2010
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]