Làm thế nào chính xác là bạn đang giải nén các tập tin? Bạn đang sử dụng dòng lệnh hoặc GUI? Bạn đang kéo các tập tin hoặc chọn chúng và sử dụng chức năng giải nén? Bạn đang sử dụng trình đơn ngữ cảnh shell-extension?
Nếu bạn nhập thư mục đích và sau đó chọn chức năng giải nén hoặc sử dụng tiện ích mở rộng shell, thì trước tiên chúng không giải nén vào thư mục tạm thời, chúng sẽ trích xuất trực tiếp đến đích.
Nếu bạn chọn các tệp trong UI và kéo chúng vào thư mục đích, thì nó sẽ trích xuất vào một thư mục tạm thời.
Lý do là làm thế nào các điểm đến được chọn. Nếu bạn nhập thư mục đích hoặc sử dụng mục menu ngữ cảnh, thì chương trình sẽ biết chính xác nơi cần trích xuất. Tuy nhiên, nếu bạn chỉ kéo các tệp, thì do cách hoạt động của chức năng kéo và thả của OLE , chương trình không biết thư mục đích ở đâu. Nói cách khác, đó là Explorernhận được thư mục đích, không phải chương trình lưu trữ. Do đó, chương trình không thể biết trích xuất chúng ở đâu và do đó chỉ cần trích xuất chúng vào thư mục tạm thời, sau đó Explorer di chuyển chúng sau khi hoàn tất. Bạn có thể thấy rõ điều này bằng cách trích xuất một tệp lớn bằng cả hai phương pháp. Khi bạn kéo nó ra một thư mục, nó sẽ giải nén, sau đó bạn thấy hộp thoại thao tác tệp tiêu chuẩn của Explorer di chuyển nó vào thư mục. Nếu bạn chỉ định thư mục và nhấp vào Trích xuất, nó sẽ trích xuất và không xử lý thêm được thực hiện.
Vui lòng kiểm tra mã nguồn cho 7-Zip để xem cách xử lý vị trí trích xuất.
Tôi đã học được điều này một cách khó khăn vài năm trước khi tôi muốn thực hiện kéo và thả trong một chương trình tôi đang viết.