Добрый день!
Как в TS 3.X лучше работать с zip-архивами (распаковать файлы, упаковать файлы)?
Нравится
2 комментария
28 декабря 2015 12:51
Думаю, стоит использовать какой-то COM-объеккт и вызывать его методы. Например, стандартный в Windows объект Shell.Application тоже умеет работать с ZIP.
28 декабря 2015 15:00
Добрый день.
Все зависит от поставленной задачи.
Самый простой способ, это использовать встроенный Zip-архиватор ОС Windows.
Пример использования:
function Main() { var zFolder = "c:\\log.zip"; var eFolder = "c:\\log"; ExtractFileFromZip(zFolder, eFolder); CompriseFileToZip(eFolder, zFolder); } function ExtractFileFromZip(PathFrom, PathTo) { var FSO = new ActiveXObject("Scripting.FileSystemObject"); var App = new ActiveXObject("Shell.Application"); if (FSO.FolderExists(PathTo)) { FSO.DeleteFolder(PathTo, true); } FSO.CreateFolder(PathTo); var FolderPathTo = FSO.GetFolder(PathTo).Path; var FolderPathFrom = App.Namespace(FSO.GetFile(PathFrom).Path); var ZipItems = App.Namespace(FolderPathFrom).Items(); App.Namespace(FolderPathTo).CopyHere(ZipItems); } function CompriseFileToZip(PathFrom, PathTo) { var Str = "PK%05%06%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00"; var ForWriting = 2; var FSO = new ActiveXObject("Scripting.FileSystemObject"); var App = new ActiveXObject("Shell.Application"); if (FSO.FileExists(PathTo)) { FSO.DeleteFile(PathTo, true); } var Itm = FSO.OpenTextFile(PathTo, ForWriting, true); Itm.Write(unescape(Str)); Itm.Close(); var Enm = new Enumerator(FSO.GetFolder(PathFrom).Files); for (; !Enm.atEnd(); Enm.moveNext()) { Itm = Enm.item(); App.Namespace(FSO.GetFile(PathTo).Path).CopyHere(Itm.Path); } }
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать