260文字を超えるパスの対応について

投稿者: 投稿日:2019/12/05(Thu) 22:09:03 No.2533

 お世話になっております。

 最近、260文字を超えるパスを扱うことがそれなりにあるんですが、プロデルではうまく扱うことができないようで、「System.IO.PathTooLongException」が発生してしまい、困っています。
 主に利用する操作としては、ファイルサイズの取得、更新日や作成日等の取得、ファイルの属性の取得などです。
 C#の使用上仕方ないのでしょうか。
 何か方法があれば、教えていただけると幸いです。

 以上、よろしくお願いいたします。

.NET Frameworkの仕様です

投稿者:ゆうと 投稿日:2019/12/06(Fri) 18:52:37 No.2535

こんにちは ゆうとです。

.NET Framework 4の仕様で、260文字以上の長いパスはエラーとなるようです。
これは古いWindowsとの互換性を維持するためで、基本的には260文字以上のパスを使用できないと考えて下さい。

ただプロデル側でも設定の変更で一部のケースは対処可能なようです。ただ修正箇所が多数あり、対処しても実行可能ファイルではエラーとなるなどして完全な対応には手間が掛かりますので積極的には対処しません。
260文字以上となるのは希なケースと思いますので、基本的には対応できない、と考えて下さい。

パスが長くならないようにフォルダ名の作り方を改めるなどして、作り方の改良をお願いします。

よろしくお願いします。

Re: .NET Frameworkの仕様です

投稿者: 投稿日:2019/12/07(Sat) 08:18:42 No.2537

 こんにちは。

 やはりそうですよね。
 了解しました。
 ありがとうございました。

 それでは。

Re: 260文字を超えるパスの対応について

投稿者:アーク <info.nds.laboratry あっとまーくgmail.com> 投稿日:2019/12/07(Sat) 10:26:56 No.2538

こんにちは。アークです。

御承知の様にポリシーを変更する事で260文字の制限を解除する事はできます。
しかし、現状ではウィンドウズ標準のソフトでさえ全て対応している訳では無いようです。
また、解除したところでフォルダの最大長248文字と、
それを含めたファイル名の最大長が260文字というのは一部に残っているので、
そこから先はフォルダを作る事ができません。
…なので今は可能であれば使わない方が良いようです。

但し何としても取得したいという事であればできなくも有りません。
例えば「dir」コマンドは対応していますので、
その結果から必要な内容を取り出す事で可能です。
データ量の違いは有りますがスクレイピング&マイニングの手法です。
例によってあまりスマートな方法では有りませんが機能します。

▲ページの先頭へ

- WebForum -