ทำไม 7-zip / WinRAR ทำการคลายซิปไฟล์ไปที่ "temp" ก่อนที่จะย้ายไปยังปลายทาง?
ฉันไม่เห็นความได้เปรียบใด ๆ กับการขยายไฟล์ไปยังปลายทางโดยตรง มันน่ารำคาญจริงๆโดยเฉพาะไฟล์ขนาดใหญ่ (เหมือนตอนนี้!)
แก้ไข:
กรุณาอธิบายว่าทำไมพวกเขาไม่ได้ทำในสถานที่
ทำไม 7-zip / WinRAR ทำการคลายซิปไฟล์ไปที่ "temp" ก่อนที่จะย้ายไปยังปลายทาง?
ฉันไม่เห็นความได้เปรียบใด ๆ กับการขยายไฟล์ไปยังปลายทางโดยตรง มันน่ารำคาญจริงๆโดยเฉพาะไฟล์ขนาดใหญ่ (เหมือนตอนนี้!)
แก้ไข:
กรุณาอธิบายว่าทำไมพวกเขาไม่ได้ทำในสถานที่
คำตอบ:
คุณจะแยกไฟล์อย่างไร? คุณกำลังใช้ command-line หรือ GUI อยู่หรือไม่? คุณลากไฟล์หรือเลือกไฟล์และใช้ฟังก์ชั่นแตกไฟล์หรือไม่? คุณใช้เมนูบริบทของส่วนขยายของเชลล์หรือไม่?
หากคุณป้อนโฟลเดอร์ปลายทางจากนั้นเลือกฟังก์ชั่นการแยกหรือใช้ส่วนขยายของเชลล์พวกเขาจะไม่แยกไปที่โฟลเดอร์ชั่วคราวก่อนพวกเขาจะแยกโดยตรงไปยังปลายทาง
หากคุณเลือกไฟล์ใน UI และลากไปยังโฟลเดอร์เป้าหมายไฟล์นั้นจะแตกไปยังโฟลเดอร์ชั่วคราว
เหตุผลอยู่ที่การเลือกปลายทาง หากคุณเข้าสู่โฟลเดอร์เป้าหมายหรือใช้รายการเมนูตามบริบทโปรแกรมจะทราบได้อย่างชัดเจนว่าจะต้องแตกไฟล์ที่ใด อย่างไรก็ตามถ้าคุณเพียงแค่ลากไฟล์ดังนั้นเนื่องจากฟังก์ชันการลากและวางของOLEทำงานอย่างไรโปรแกรมจะไม่ทราบว่าโฟลเดอร์เป้าหมายอยู่ที่ใด กล่าวอีกนัยหนึ่งคือExplorerที่ได้รับโฟลเดอร์เป้าหมายไม่ใช่โปรแกรมเก็บถาวร ด้วยเหตุนี้โปรแกรมจึงไม่สามารถทราบได้ว่าจะดึงข้อมูลเหล่านั้นไว้ที่ใดและแยกไฟล์เหล่านั้นไปยังโฟลเดอร์ชั่วคราวแล้ว Explorer จะย้ายพวกเขาเมื่อเสร็จสิ้น คุณสามารถดูได้อย่างชัดเจนโดยแยกไฟล์ขนาดใหญ่โดยใช้ทั้งสองวิธี เมื่อคุณลากมันออกไปยังโฟลเดอร์มันจะแตกออกมาจากนั้นคุณจะเห็นกล่องโต้ตอบการทำงานของไฟล์มาตรฐานของ Explorer ที่ย้ายไปยังโฟลเดอร์ หากคุณระบุโฟลเดอร์และคลิกแตกไฟล์จะแตกออกและไม่มีการดำเนินการใด ๆ เพิ่มเติม
อย่าลังเลที่จะอ่านซอร์สโค้ดสำหรับ 7-Zipเพื่อดูวิธีจัดการตำแหน่งการแตกไฟล์
ฉันเรียนรู้วิธีนี้ยากเมื่อหลายปีก่อนเมื่อฉันต้องการใช้การลากแล้วปล่อยในโปรแกรมที่ฉันเขียน
มันทำเพื่อความต้องการหน่วยความจำสำหรับการบีบอัดจะถูกเก็บไว้ให้น้อยที่สุด
หากพวกเขาไม่ได้ใช้ระบบไฟล์การบีบอัดจะเกิดขึ้นในหน่วยความจำ ภายใต้เงื่อนไขหน่วยความจำเหลือน้อยหรือสำหรับไฟล์บีบอัดขนาดใหญ่จะทำให้หน่วยความจำที่มีอยู่หมดในไม่ช้าก็เร็วและเริ่มกระบวนการเพจจิ้งหน่วยความจำ
การเพจภายใต้สถานการณ์เหล่านี้จะช้ากว่าการใช้ระบบไฟล์อย่างมากเพราะไฟล์ยังคงถูกคลายบีบอัด (และไฟล์หน้ายังคงถูกเพิ่ม) แต่เนื่องจากในขณะที่ไฟล์กำลังถูกแตกไฟล์จะถูกตรวจสอบข้อผิดพลาดและมีเช่น การดำเนินการอ่าน / เขียนจำนวนมาก สิ่งที่แย่ที่สุดที่อาจเกิดขึ้นกับไฟล์เพจ
แก้ไข: เกี่ยวกับการใช้ไดเรกทอรีชั่วคราวนี่คือเพื่อปฏิบัติตามแนวทางระบบปฏิบัติการมากมาย หากการคลายการบีบอัดล้มเหลวจะไม่มีการรับประกันว่าโปรแกรมที่ใช้ในการดำเนินการจะทำความสะอาดตัวมันเอง มันอาจจะล้มเหลวเช่น ดังนั้นจะไม่มีไฟล์ที่เหลืออยู่ในไดเรกทอรีเป้าหมายของคุณและระบบปฏิบัติการจะกำจัดไฟล์ชั่วคราวเมื่อเห็นว่าเหมาะสม
เหตุผลง่ายกว่าที่คุณคิด: หลาย ๆ โปรแกรมแกะไฟล์ไปยัง% temp% นั่นคือระบบไฟล์ปลายทางอาจมีพื้นที่ไม่เพียงพอ
ตอนนี้คุณอาจรู้ว่าระบบไฟล์ของคุณอาจมีพื้นที่ว่างเพียงพออย่างไรก็ตามแอปพลิเคชันไม่มี จะเกิดอะไรขึ้นถ้าระบบไฟล์นั้นใช้งานอยู่โดยระบบปฏิบัติการหรือแอปพลิเคชั่นอื่นและถูกเติมเต็มในขณะที่คลายการบีบอัด?
นักพัฒนาสร้างสมมติฐานว่า% temp% มีพื้นที่ "ไม่ จำกัด " ในขณะที่ปลายทางของคุณไม่มี
ไม่ใช่นักพัฒนา 7-zip หรือ WinRAR ความคิดเห็นของฉันที่นี่เป็นการเก็งกำไรล้วนๆ ที่กล่าวว่าการใช้พื้นที่ชั่วคราวเพื่อคลายออกจนทุกอย่างสมบูรณ์ช่วยในการตรวจสอบว่าไฟล์ทั้งหมดยังคงอยู่ (เช่นซิปไม่เสียหาย)
ไม่มีอะไรเลวร้ายยิ่งไปกว่าการคลายไฟล์บีบอัดขนาดใหญ่ออกมาหลังจากที่เริ่มทำงานกับไฟล์ที่จุดเริ่มต้นของไฟล์เก็บถาวร เท่านั้นที่จะพบว่ามีบางสิ่งที่เสียหายในตอนท้ายของที่เก็บถาวร ณ จุดนี้คุณสูญเสียความมั่นใจในทุกสิ่ง
ความคิดเห็นสุดท้ายของฉันคือฉันจำไม่ได้ว่าเห็นพฤติกรรมนี้จาก 7-zip เมื่อฉันคลิกขวาและพูดว่าแยกที่นี่ฉันมักจะสามารถเข้าถึงไฟล์ตามที่พวกเขาจะถูกแตกไฟล์ คุณได้ตรวจสอบอีกครั้งว่าไม่ได้ตั้งค่าไว้ที่อื่นหรือไม่?