เส้นทางไฟล์ที่ยาวที่สุดที่ Windows สามารถจัดการคืออะไร
เส้นทางไฟล์ที่ยาวที่สุดที่ Windows สามารถจัดการคืออะไร
คำตอบ:
ความยาวเส้นทางสูงสุด (จาก MSDN)
ในการ Windows API (มีข้อยกเว้นบางที่กล่าวถึงในย่อหน้าต่อไปนี้) ความยาวสูงสุดสำหรับเส้นทางคือMAX_PATH ซึ่งถูกกำหนดให้เป็น 260 ตัวอักษร เส้นทางโลคัลถูกจัดโครงสร้างตามลำดับต่อไปนี้: ตัวอักษรชื่อไดรฟ์เครื่องหมายแบ็กสแลชส่วนประกอบที่คั่นด้วยแบ็กสแลชและอักขระโมฆะสิ้นสุด ตัวอย่างเช่นพา ธ สูงสุดในไดรฟ์ D คือ "D: \ <สตริงอักขระพา ธ 256 ตัวอักษร> <NUL>" โดยที่ "<NUL>" แสดงถึงอักขระ null สิ้นสุดที่มองไม่เห็นสำหรับเพจรหัสของระบบปัจจุบัน (อักขระ <> ใช้ที่นี่เพื่อความชัดเจนที่มองเห็นและไม่สามารถเป็นส่วนหนึ่งของสตริงพา ธ ที่ถูกต้อง)
เส้นทางไฟล์ XP - 250 ตัวอักษร
เส้นทางไฟล์ Vista - 260 ตัวอักษร
เส้นทางที่ยาวที่สุดในการติดตั้ง Windows XP ใหม่ทั้งหมดคือ 152 ตัวอักษร
เส้นทางที่ยาวที่สุดในการติดตั้ง Windows Vista แบบกึ่งสะอาดคือ 195 ตัวอักษร:
Windows XP อนุญาตให้ตั้งชื่อไฟล์ได้ไม่เกิน 255 อักขระ
Windows Vista อนุญาตให้มีชื่อไฟล์ที่ยาวได้ถึง 260 ตัวอักษร
ค่าคงที่ของ Windows MAX_PATH
เท่ากับ 260 อย่างที่คำตอบอื่น ๆ บอกอย่างไรก็ตามเส้นทางที่ยาวที่สุดที่แท้จริงคือ 32767
32k กำลังใช้ UNICODE แต่ตอนนี้เราต้องใช้มันดังนั้นเราควรใช้ความยาวพา ธ สูงสุดเช่นกัน
นอกจากนี้คุณสามารถดูคำตอบของฉันใน SOซึ่งอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับความยาวเส้นทางสูงสุด
"คลาสสิก"ขีด จำกัด260ตัวอักษร: drive letter
+ :\
+ 255 characters of filename
+ \
(หรือสำหรับการปัดเศษ) + null terminator
เป็นกล่าวในคำตอบอื่น ๆ
อย่างไรก็ตามข้อ จำกัด ภายในที่แท้จริงคือ32767ตัวอักษรซึ่งสามารถทำได้โดยการต่อท้าย\\?\
เพื่อรับเส้นทางที่ผ่านการรับรองโดยสมบูรณ์
Windows API มีฟังก์ชั่นมากมายที่มีรุ่น Unicode เพื่ออนุญาตให้ใช้พา ธ ที่มีความยาวแบบขยายสำหรับความยาวพา ธ รวมสูงสุดที่ 32,767 อักขระ พา ธ ประเภทนี้ประกอบด้วยส่วนประกอบที่คั่นด้วยแบ็กสแลชแต่ละค่าจนถึงค่าที่ส่งคืนใน
lpMaximumComponentLength
พารามิเตอร์ของGetVolumeInformation
ฟังก์ชัน (ค่านี้โดยทั่วไปคือ 255 อักขระ) หากต้องการระบุพา ธ ที่มีความยาวเพิ่มให้ใช้ส่วน"\\?\"
นำหน้า ตัวอย่างเช่น"\\?\D:\very long path"
.
หากเนื่องจากเหตุผลบางประการไม่สามารถใช้พา ธ ที่ผ่านการรับรองโดยสมบูรณ์ได้คุณสามารถเข้าถึงไดเรกทอรีที่ลึกกว่าได้ด้วยการติดตั้งตัวอักษรชื่อไดรฟ์ที่มีsubst
/ diskpart
หรือโดยการสร้างjunction / symlinkเพื่อทำให้เส้นทางสั้นลง
ตั้งแต่ Windows 10 MAX_PATH
ขีด จำกัด นี้ก็ถูกลบด้วยเช่นกันแม้ว่าจะไม่ใช่โดยค่าเริ่มต้น
เริ่มตั้งแต่ Windows 10 รุ่น 1607
MAX_PATH
ข้อ จำกัด ได้ถูกลบออกจากไฟล์ Win32 ทั่วไปและฟังก์ชั่นไดเรกทอรี อย่างไรก็ตามคุณต้องเลือกใช้พฤติกรรมใหม่https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file