ВК для работы с файлами FilesNative.dll

Опубликовал Аркадий Кучер (Abadonna) в раздел Программирование - Внешние компоненты

Компонента реализует некоторые методы работы с файлами (архивами). Поддерживаемые форматы распаковки архивов: ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA, 7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZ

Компонента выполнена по технологии Native, не требует регистрации в реестре и, соответственно, особых прав пользователя.
Компонента реализует некоторые методы работы с файлами (архивами).
Поддерживаемые форматы распаковки архивов:
ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA,
7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZЗагрузка компоненты (пример загрузки в модуле обычного приложения)

Перем Файлы Экспорт;

Функция КаталогИБ() Экспорт
КаталогИБ = СтрокаСоединенияИнформационнойБазы();
КаталогИБ = Сред(КаталогИБ,7,СтрДлина(КаталогИБ)-8) + "\";
Возврат КаталогИБ;
КонецФункции

Процедура ПриНачалеРаботыСистемы()
ФайлВК=КаталогИБ()+"FilesNative.dll";
ПодключитьВнешнююКомпоненту(ФайлВК,"FilesNative",AddInType.Native);
Файлы = Новый("AddIn.FilesNative.Files"); // переменная класса
КонецПроцедуры

Методы компоненты (класса Files):

РаспаковатьАрхив(ПолноеИмяАрхивногоФайла,ПапкаКуда)

Распаковывает указанный архивный файл в указанную папку.
Распаковка ведется "до последнего", т.е. если внутри архивного файла
содержатся другие архивные файлы такого же или другого формата (а внутри их, возможно, и ещё),
в указанную папку распакуется всё.
ПапкаКуда - необязательный, по умолчанию = "c:\temp\"
Если указанная папка не существет, она будет создана.

Пример:

Архив="c:\СервисМ\TEST\TTT.RAR";
ПапкаКуда="c:\555\";
Файлы.РаспаковатьАрхив(Архив,ПапкаКуда);

УпаковатьПапку(ПолноеИмяПапки,ПолноеИмяФайлаРезультата,Тип);
Упаковывает указанную папку со всем содержимым в архивный файл формата 7Z или ZIP
Тип - строка вида ".7Z" или ".ZIP", необязательный, по умолчанию = ".7Z"
Пример:

Папка="c:\СервисМ\Taxi\";
Тип=".7Z";
ФайлРезультат="c:\Taxi"+Тип;
Файлы.УпаковатьПапку(Папка,ФайлРезультат,Тип);

УпаковатьФайл(ПолноеИмяФайла,ПолноеИмяФайлаРезультата,Тип)
Практически аналогичен предыдущему, но для отдельного файла.
Пример:

Тип=".7Z";
Файл="c:\СервисМ\1Cv8.1CD";
ФайлРезультат="c:\1Cv8_1CD"+Тип;
Файлы.УпаковатьФайл(Файл,ФайлРезультат,Тип)

ШифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяШифрованногоФайла,Пароль)
Шифрует указанный файл побайтно и создает результирущий зашифрованный файл.
Пароль - строка, необязательный, по умолчанию внутренний пароль компоненты.

Пример:

Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлИсх="c:\СервисМ\Поддерживаемые форматы.txt";
ФайлШифр="c:\СервисМ\Поддерживаемые форматы_шифр.txt";
Файлы.ШифроватьФайл(ФайлИсх,ФайлШифр,Пароль);

ДешифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяДешифрованногоФайла,Пароль)
Противоположен предыдущему.
Пример:

Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлШифр="c:\СервисМ\Поддерживаемые форматы_шифр.txt";
ФайлДеШифр="c:\СервисМ\Поддерживаемые форматы_дешифр.txt";
Файлы.ДешифроватьФайл(ФайлШифр,ФайлДеШифр,Пароль);

MD5(ПолноеИмяФайла)
Подсчитывает MD5-хеш содержимого указанного файла.
(удобно для отслеживания факта изменения)
Пример:

MD5=Файлы.MD5("c:\СервисМ\NativeFiles\FilesNative.dll");

ВерсияФайла(ПолноеИмяФайла)
Возвращает строку вида Версия;Производитель;ДатаВремяФайла,
например: 1.0.0.3;Сервис-М;18.06.2014 11:42:20
Пример:

Версия=Файлы.ВерсияФайла("c:\СервисМ\NativeFiles\FilesNative.dll");


Примечание: только для файлов exe и dll.

GUID() - без параметров, возвращает сгенерированную строку GUID,
например: {8435EA89-6585-4F86-8C12-6E9556638C97}
Удобно для генерации случайных строк.
Пример:

Сообщить(Файлы.GUID());

ВАЖНО:
для работы компоненты необходимо наличие в системе (или в каталоге компоненты)
файла 7z.dll (прилагается)

Содержимое архива: Описание.txt, 7z.dll и FilesNative.dll
(текущая версия 1.0.0.3)

© Кучер А.А. Красноярск, 2014

Скачать файлы

Наименование Файл Версия Размер
Архив
.zip 546,92Kb
28.09.16
49
.zip 1.0.0.3 546,92Kb 49 Бесплатно

См. также

Комментарии
1. Антон Стеклов (asved.ru) 31 19.06.14 07:03 Сейчас в теме
GUID() - без параметров, возвращает сгенерированную строку GUID


Новый УникальныйИдентификатор()

да и вообще, многое из описанного легко и непринужденно делается стандартными средствами.
2. Аркадий Кучер (Abadonna) 3659 19.06.14 07:17 Сейчас в теме
(1) asved.ru,
многое из описанного легко и непринужденно делается стандартными средствами.

Примерчик в студию, кроме Новый УникальныйИдентификатор()
Например, распаковка архивов, кроме формата ZIP? Или MD5? Или производитель и версия из Файл=Новый Файл(БлаБла)?
3. Яков Коган (Yashazz) 1977 19.06.14 17:02 Сейчас в теме
(2) Насчёт MD5 вроде в 8.3 есть, или скоро обещали.
В целом вещь полезная однозначно. Мне пока совершенно не нужно, тем не менее заранее спасибо и плюс.

(1) Не факт, кстати, что UUID от 1С это действительно настоящий GUID. Были, помнится, публикации на эту тему...
4. Аркадий Кучер (Abadonna) 3659 19.06.14 23:41 Сейчас в теме
(3) Yashazz, ага, MD5 таки появилась в 8.3. Хрен за ними уследишь ;)))
5. Сергей Вн (EmpireSer) 01.07.14 13:37 Сейчас в теме
(3) Yashazz,
Новый УникальныйИдентификатор() возвращает такой же GUID, как и Windows.
А вот хранение в базе, т.е. идентификатор под "_Ref", формируется уже по другому. Именно он отображается, когда объект не находится.

(0) Abadonna,
А попробуй использовать 7z как кросс-платформенный (что бы не зависит от dll).
LZMA SDK и к примеру вот тут 7-Zip-JBinding 7z у них получился кросс-платформенным и много что поддерживает.
6. Сергей Боровик (BorovikSV) 1108 03.07.14 09:26 Сейчас в теме
(4) Abadonna, MD5 вроде как уже давно в 8.3. С момента выхода ознакомительной :)
7. Сергей Боровик (BorovikSV) 1108 03.07.14 09:29 Сейчас в теме
(0) Abadonna, ты же дельфист. А для него есть вполне full source библиотека. Иначе просто так компоненту в базу не запихаешь. Придется еще с 7z таскаться.
8. Гость 15.09.14 08:33 Сейчас в теме
В минувшие выходные (14.09.14), на 56-году ушел из жизни Кучер Аркадий (aka Abadonna).
RIP
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа