絶対パスの文字長さについて
最近、あるファイルが読めない事象が発生しました。
中身は、テキストファイルです。通常なら読めない事はまずありません。
試しに、その読めないファイルをデスクトップへコピーすると読み込むことができました。
ファイルそのものが壊れて読めないよ言う事ではなさそうです。
フォルダに問題があるのでしょうか?
もしかして、何かの拍子にフォルダへのアクセス許可が変わったとのかとも思い調べましたが問題ありません。
インターネットで同じ事象が無いか調べました。
原因は、フォルダ名+ファイル名のパス名が長い事により、WINDWSの制限がかかったためでした。
WINDWSで扱えるファイル名の最大長さは「255文字」までだそうです。
さすがに、一つのファイルに255文字分もの長い名前はつけませんが、うっかりしていたのは、「パス」を含めた文字数制限でした。
パス名の文字数は「260文字」までが限界だそうです。パスには終端文字というもので「1文字」使われてしまうので、実際は「259文字」までです。
たとえば「259文字」だと下記のようなパスの長さになります。
D:\1234567890\1234567890\1234567890\1234567890\1234567890
\1234567890\1234567890\1234567890\1234567890\1234567890\1
234567890\1234567890\1234567890\1234567890\1234567890\123
4567890\1234567890\1234567890\1234567890\1234567890\12345
67890\1234567890\1234567890.txt
これ以上長いパスのフォルダを作ろうとすると「対象のパスが長すぎます」というメッセージが出て、フォルダを作ることができません。
当社は、ファイルサーバにてデータを共有しています。
保管場所であるフォルダ名は規則性を持たせ、「ファイルを探す」という、作業をできるだけ簡単にするよう工夫はしています。
しかし、フォルダ名をわかりやすいものにする為に物件名等をフォルダ名にすることも多く、そうするとどうしてもフォルダ名、ファイル名が長くなってしまいます。
今回は、このフォルダ名の長さが、幾重にも重なって、259文字の制限を超えた事による不具合でした。
弊社で起こった事象は、フォルダを移動した際にフォルダそのものは設置できたけれども、中に入っているファイルにはアクセスできなかったという事だったのでしょう。
このことから
- フォルダをあまり深い階層にしない。
- 短くてもわかりやすいフォルダ名を付ける。
等の改善を行い、業務の利便性の向上とトラブル防止に努めなければと思います。