Создание Сжатой (Заархивированной) Папки с помощью Delphi

работать со всеми https

httpClient = new DefaultHttpClient();

SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
    public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { }

    public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { }

    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }
};

ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

httpClient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", 443, ssf));
10
задан Eugene Yokota 4 July 2009 в 19:13
поделиться

6 ответов

Некоторое время назад я перепробовал все библиотеки сжатия Delphi, которые смог найти, и в конце концов я использовал KaZip от Кирил Антонов .

Мои требования:

  • Бесплатно;
  • Открытый исходный код;
  • Собственный код Delphi;
  • Никаких внешних зависимостей (dll, exe) . Мое самое важное требование:
  • Небольшой объем памяти;
  • Простота использования;

Я использую его в основном для преобразования файлов .kml в .kmz, и это происходит на удивление быстро.

Вот пример того, как Я использую это:

uses
  KaZip;

...

// replaces a .kml file with a .kmz file
procedure KmlToKmz(const aFileName: string);
var
  FS: TFileStream;
  KaZip:TKaZip;
  KmzFileName:TFileName;
begin
  KmzFileName := ChangeFileExt(aFileName, '.kmz');
  KaZip := TKaZip.Create(nil);
  try
    // create an empty zipfile with .kmz extension:
    FS := TFileStream.Create(KmzFileName, fmOpenReadWrite or FmCreate);
    try
      KaZip.CreateZip(FS);
    finally
      FS.Free;
    end;        

    KaZip.Open(KmzFileName); // Open the new .kmz zipfile
    KaZip.Entries.AddFile(aFileName); // add the .kml
    KaZip.Close; 
    DeleteFile(aFileName); // delete the .kml
  finally
    KaZip.Free;
  end;
end;
4
ответ дан 3 December 2019 в 14:18
поделиться

Вы можете использовать TurboPower Abbrevia , который теперь является открытым исходным кодом.

3
ответ дан 3 December 2019 в 14:18
поделиться

Согласно потоку в eggheadcafe , вы можете использовать CreateFile Function с FILE_FLAG_BACKUP_SEMANTICS для создания сжатой папки.

] Для маршрута расширений оболочки см. Использование расширения оболочки Windows XP «Сжатая папка» для работы с файлами .zip с помощью пространства имен Edanmo, написанного на VB.

Я только что нашел аналогичный вопрос спросил на C ++. Взгляните на Создание ZIP-файла в Windows (XP / 2003) на C / C ++ . У меня такое чувство, что проще всего купить ZipForge. См. Заархивируйте файл в примере кода Delphi .

5
ответ дан 3 December 2019 в 14:18
поделиться

Вы можете использовать некоторую версию командной строки любого компрессора, например 7zip , и выполнять задачу с помощью ShellExecute, либо вы можете использовать бесплатный или коммерческий компонент, как любой из этих .

Я использовал ZipMaster , и он очень хорошо подходит для моих целей. Я не знаю, каковы ваши требования к размеру, пространству и производительности.

1
ответ дан 3 December 2019 в 14:18
поделиться
1
ответ дан 3 December 2019 в 14:18
поделиться

«Заархивированная» папка в Windows - это не что иное, как файл .ZIP, сжатый с помощью любой стандартной библиотеки zip. Сжатые папки - это другое дело, и для них требуется дисковый формат NTFS.

Для файла «Zip» я настоятельно рекомендую Turbo Power Abbrevia , который является открытым исходным кодом и хорошо работает. Вы можете проверить этот альтернативный сайт, если вы используете Delphi 2009, поскольку это может быть более поздняя копия.

Если вы хотите использовать параметр сжатых папок, вам нужно будет изменить флаги каталогов на дескриптор каталога. Это повлияет только на НОВЫЕ файлы, добавленные в этот каталог, и не будет автоматически сжимать существующие файлы. Если у вас есть существующий каталог, который вы пытаетесь сжать, переименуйте каждый существующий файл, и загрузите и сохраните его с исходным именем, удалив исходный файл по завершении каждого из них. У Йози была хорошая ссылка на документацию MSDN . Просто помните, что это работает только с дисками, отформатированными в NTFS, поэтому вам нужно будет добавить проверку для этого в свой код.

2
ответ дан 3 December 2019 в 14:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: