Tôi có thể tạo Thư mục Nén (Nén) của Windows XP bằng Delphi không?Tạo Thư mục Nén (Nén) bằng Delphi
Trả lời
Theo chủ đề trong eggheadcafe, bạn có thể sử dụng CreateFile Function với FILE_FLAG_BACKUP_SEMANTICS
để tạo Thư mục nén.
Đối với tuyến đường mở rộng vỏ, hãy xem Using Windows XP "Compressed Folder" shell extension to work with .zip files bởi Không gian tên Edanmo, được viết bằng VB.
Tôi vừa tìm thấy câu hỏi tương tự được hỏi trên C++. Hãy xem Creating a ZIP file on Windows (XP/2003) in C/C++. Tôi có cảm giác con đường dễ nhất là mua ZipForge. Xem Zip a file in Delphi code sample.
Bạn có thể sử dụng một số phiên bản dòng lệnh của bất kỳ máy nén nào như 7zip và thực hiện tác vụ bằng ShellExecute hoặc bạn có thể sử dụng thành phần miễn phí hoặc comercial như bất kỳ ai trong số these.
Tôi đã sử dụng ZipMaster và nó hoạt động rất tốt cho mục đích của tôi. Tôi không biết yêu cầu về kích thước, không gian và hiệu suất của bạn là bao nhiêu.
Tôi hiện đang sử dụng nó, phù hợp với nhu cầu của tôi. –
Bạn có thể sử dụng TurboPower Abbrevia hiện là nguồn mở.
Hãy nhìn vào những:
Một số thời gian trước đây, tôi đã thử tất cả các thư viện nén Delphi rằng tôi có thể tìm thấy, và cuối cùng tôi đã kết thúc lên bằng cách sử dụng KaZip bởi Kiril Antonov.
Yêu cầu của tôi là:
- miễn phí;
- Nguồn mở;
- Mã Delphi gốc;
- Không có phụ thuộc bên ngoài (dll, exe). Yêu cầu quan trọng nhất của tôi;
- Dấu chân bộ nhớ nhỏ;
- Dễ sử dụng;
Tôi sử dụng chủ yếu để chuyển các tệp .kml thành tệp .kmz và nó hoạt động nhanh đến đáng ngạc nhiên.
Dưới đây là một ví dụ về cách tôi sử dụng nó:
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;
đối tượng "Tự do" cuối cùng áp dụng đối tượng nào? Tôi đoán là KaZip, nhưng tôi không có đại diện để chỉnh sửa. – Argalatyr
Ah, có KaZip nên được giải phóng ở đó .. Cố định nó .. Tôi làm sạch mã này lên trong trình soạn thảo văn bản của trang này để làm cho nó dễ dàng hơn một chút để đọc .. Tôi đoán tôi nên đã kiểm tra nếu nó vẫn hoạt động :) –
A "nén" thư mục trong Windows là gì khác hơn là một tập tin ZIP nén sử dụng bất kỳ thư viện zip tiêu chuẩn. Thư mục nén là một động vật khác và yêu cầu định dạng đĩa NTFS.
Đối với tệp "Zip", tôi đề xuất rõ ràng Turbo Power Abbrevia, là nguồn mở và hoạt động tốt. Bạn có thể muốn kiểm tra trang web này alternate nếu bạn sử dụng Delphi 2009 vì nó có thể là một bản sao mới hơn.
Nếu bạn muốn sử dụng tùy chọn thư mục nén, bạn sẽ cần sửa đổi cờ thư mục trên tay cầm thư mục.Điều này sẽ chỉ ảnh hưởng đến các tệp MỚI được thêm vào thư mục đó và sẽ không tự động nén các tệp hiện có. Nếu bạn có một thư mục hiện có mà bạn đang cố gắng nén, sau đó đổi tên từng tệp hiện có và tải và lưu nó trở lại tên gốc xóa tệp gốc khi hoàn tất với mỗi tệp. Yozey có liên kết tốt với tài liệu MSDN. Chỉ cần nhớ rằng điều này chỉ hoạt động với các định dạng đĩa NTFS, vì vậy bạn sẽ cần phải thêm một kiểm tra cho điều đó trong mã của bạn.
Hãy xem điều này OpenSource SynZip unit. Nó thậm chí còn nhanh hơn để giải nén hơn so với các đơn vị mặc định được vận chuyển với Delphi, và nó sẽ tạo ra một exe nhỏ hơn (các bảng crc được tạo khi khởi động).
Không có dll bên ngoài là cần thiết. Hoạt động từ Delphi 6 lên đến XE. Không có vấn đề với phiên bản Unicode của Delphi. Tất cả trong một đơn vị duy nhất.
Tôi vừa thực hiện một số thay đổi để xử lý tên tệp Unicode bên trong nội dung Zip, không chỉ bộ ký tự Win-Ansi mà còn bất kỳ ký tự Unicode nào. Phản hồi được hoan nghênh.
bạn có thể đưa ra một ví dụ để sử dụng 'SynZip'? từ [example] (http://synopse.info/forum/viewtopic.php?pid=163) làm thế nào để nén một thư mục? – PresleyDias
Nếu bạn đang sử dụng Delphi X2, chỉ cần sử dụng TZipFile từ System.Zip:
Để Zip một thư mục, sử dụng:
TZipFile.ZipDirectoryContents('ZipFile.zip', 'C:\Zip\this\right\now');
Để Zip file, sử dụng:
Zip := TZipFile.Create;
try
Zip.Open('ZipFile.zip', zmWrite);
Zip.Add('FileToBeZipped.txt');
Zip.Add('ThisWillBeCompressedAgainForSureAndBecomeSmaller.zip');
finally
Zip.Free;
end
sử dụng tính năng này để nén một thư mục nhưng vẫn tiếp tục nhận được "Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quy trình khác. Tôi không chắc chắn cách truy cập của nó? Tôi giải phóng danh sách tôi có với tất cả các iamges trong thư mục. Bất cứ cách nào để xem những gì đang truy cập nó? hoặc bất kỳ cách nào để đóng những gì bao giờ được truy cập nó ..? cảm ơn –
@GlenMorse Sau 3 năm tôi đọc anser này.Các chức năng đầu tiên có thể không làm việc. mã zip nhưng chỉ với tệp đầu tiên, có thể chức năng đó đang chặn chính nó.Sử dụng aproach thứ hai, nó hoạt động tốt –
phiên bản đầu tiên hoạt động Bạn chỉ cần thoát ra khỏi con đường của riêng mình. ('.. \ ZipFile.zip', 'C: \ Zip \ this \ right \ now'); –
- 1. Tạo thư mục nén (hoặc nén)
- 2. nén một thư mục
- 3. Tạo thư mục nén/nén trong Windows bằng Powershell hoặc dòng lệnh
- 4. Nén thư mục chứa thư mục con
- 5. Nén và giải nén thư mục trong C#
- 6. Nén/giải nén các thư mục & tập tin
- 7. Tôi làm cách nào để nén một thư mục và gửi email tệp nén bằng Python?
- 8. Nén một thư mục bằng cách sử dụng nén NTFS trong .NET
- 9. Nén và giải nén các thư mục và tệp bằng cách sử dụng Java
- 10. Java ZIP - cách giải nén thư mục?
- 11. Làm cách nào để nén thư mục bằng .NET?
- 12. Nén bằng Java Giải nén bằng PHP
- 13. Lệnh để nén thư mục bằng cách sử dụng thư mục cụ thể làm gốc
- 14. Tìm thư viện thực hiện nén/giải nén LZW
- 15. Nén tệp nén zip
- 16. Nén GZIP Apache không nén js/css trong các thư mục khác
- 17. Nén tệp bằng RAR
- 18. Làm cách nào để nén tệp bằng cấu trúc thư mục phẳng bằng Zipfile bằng Python?
- 19. Máy nén Django không tái tạo CSS nén
- 20. Tự giải nén chương trình Delphi
- 21. Cách giải nén thư mục trong ứng dụng iPhone IOS
- 22. Cách nén thư mục không có đường dẫn đầy đủ
- 23. Một dòng để nén thư mục trong PowerShell?
- 24. Cầu cảng: giải nén .war vào thư mục cụ thể
- 25. Nén các tệp và thư mục trong android
- 26. Nén/giải nén NSString trong mục tiêu-c (iphone) bằng GZIP hoặc giảm phát
- 27. mod deflate không nén thư mục con của root
- 28. Máy nén YUI trên toàn bộ thư mục - os x
- 29. buộc giải nén một số thư mục trứng nhất định
- 30. Giải nén tar.gz vào thư mục gốc với Gradle
gì "thuộc tính zip" bạn đang đề cập đến? Bạn có thể cụ thể hơn một chút không? –
Tua nhanh 2 năm tới 2011: Delphi XE2 hiện có tàu với một lớp TZipFile được tích hợp vào RTL (xem System.Zip). Có lẽ ai đó thực sự sử dụng nó có thể đăng một câu trả lời về nó ở đây. –
Đã thêm ví dụ về Delphi XE2. –