2012-06-16 40 views
7

Tôi cố gắng để sử dụngnén một thư mục

TZipFile.ZipDirectoryContents() 

Giống như vậy:

TZipFile.ZipDirectoryContents('Test.PCF', WorkingDir); 

Nếu tôi đọc quyền này, cần lưu nội dung của thư mục "workingdir" vào một tập tin có tên là Test .pcf.

Bây giờ khi tôi làm điều này tôi nhận được lỗi ::

Raised exception class EFOpenError with message Cannot open file 
...test.pcf. The process cannot access the file because its being used by another process." 

Hai điều nhầm lẫn tôi:

  1. Nó nói rằng nó không thể mở tập tin. Chưa có test.pcf. Tôi đã hy vọng điều này sẽ tạo ra nó.

  2. Nó nói không thể truy cập tệp. Có phải vì nó chưa được tạo? Tôi có sử dụng chức năng này không? Nếu vậy, làm cách nào để tạo tệp zip từ vị trí thư mục?

+1

Tương tự như vậy, tôi không quen với TZipFile nhưng nó có thể là 'Test.PCF' nằm trong thư mục bạn đang cố gắng nén? –

Trả lời

14

Tôi đã thử nghiệm mã của bạn và mã không thành công giống như cách bạn báo cáo.

Sau đó, tôi đã tạo tệp nén trống theo cách thủ công bằng cách chạy WinZip.

Sau đó, chạy mã của bạn và mã hoạt động tốt.

Dường như tệp zip phải tồn tại để ZipDirectoryContents hoạt động.

Để tạo một file zip programatically:

myZipFile := TZIpFile.Create; 
    myZipFile.Open('c:\myfolder\newzipfile.zip', TZipMode.zmWrite); 
    myZipFile.Close; 
    myZipFile.Free; 

Dòng này sau đó sẽ làm việc:

TZipFile.ZipDirectoryContents('c:\myfolder\newzipfile.zip', WorkingDir); 
Các vấn đề liên quan