setelah penelitian yang panjang, saya akhirnya menemukan bahwa nama path tidak boleh lebih dari 256 karakter bahkan di Microsoft Windows 7. Saya benar-benar tidak mengerti mengapa ada batasan yang bodoh, karena NTFS dapat menangani hingga ~ 32.000 karakter path panjang tanpa masalah sejak lebih dari selusin tahun! Apakah tidak ada kemungkinan untuk mengubahnya? Atau adakah solusi praktis untuk menghindarinya?
260 karakter hanya sedikit untuk kasus penggunaan sederhana seperti beberapa direktori foto bersarang dengan nama file yang panjang.
Jawaban:
Menurut Microsoft:
Windows API tradisional membatasi nama jalur hingga 260 karakter, bahkan untuk aplikasi yang dikembangkan untuk versi terbaru.
Aplikasi yang menggunakan Unicode-aware API dapat menggunakan bentuk jalur yang memungkinkan hingga 32767 karakter. Nama file harus diawali dengan
\\?\
, dan harus path absolut, misalnya,\\?\c:\dir\file
atau\\?\UNC\server\share\file
. Ada batasan lebih lanjut, lihat referensi untuk detailnya.Jika Anda berhasil membuat dan menggunakan hierarki file yang dalam dan perlu bekerja dengan aplikasi yang gagal karena panjangnya nama file, ada beberapa hal yang bisa Anda coba:
Gunakan
mklink
perintah untuk membuat tautan simbolik , dan berikan jalur yang menggunakannya ke aplikasi Anda.Gunakan
subst
perintah untuk menetapkan huruf drive ke direktori.Mulai aplikasi Anda dari direktori yang dalam dan berikan jalur relatif pendek.
Ganti beberapa nama panjang dengan nama alias 8,3 mereka (
micros~1
), dengan asumsi yang masih ada di Windows 7. Jika Anda memilikimicros~1
bersamamicros~2
, saya tidak tahu bagaimana cara mengatakan yang mana; mungkin menjalankan DOScommand.com
(sekali lagi, dengan asumsi Windows 7 masih bisa melakukannya).sumber
micros~1
, jadi ini pada dasarnya acak.Anda bisa menggunakan nama pendek (8,3) untuk semua folder dan file Anda.
Anda perlu memastikan bahwa itu diaktifkan.
(berani saya)
Anda juga harus menulis beberapa kode untuk mendapatkan nama pendek dari nama panjang.
Sumber
sumber
Nama file / direktori di NTFS terbatas pada 255 unicode codepoints, karena panjangnya disimpan sebagai byte. Tetapi tidak ada batas inheren dari total panjang jalur.
Banyak panggilan Win32 API (termasuk explorer shell) panggilan memang memiliki batas 260 - 1 panjang. Beberapa panggilan lain memiliki kemampuan untuk menggunakan awalan \\? \ Untuk mendapatkan hingga 32K (sedikit lebih sedikit, karena nama volume akan diganti di Kernel-land)
sumber