DOBON.NET DOBON.NETプログラミング掲示板過去ログ

260文字以上のファイルパスについて

環境/言語:[WindowsXP-SP2/C#2003/.NET Framework1.1]
分類:[.NET]

いつも参考にさせていただいています。

あるプログラムを動作させて得た結果を
CSVファイルに書き出す処理を作成しています。
しかしながらこのファイル名が260文字を超えてしまう場合があります。

MSのヘルプにはファイルパスの先頭にプレフィックスを付加すれば
MAX_PATH以上の長さのパスを使用できると記述されていたので
以下のようにしました。

string szFileName = @"\?\c:\・・・・・・・\result.csv";
FileStream fsw = new FileStream(szFileName, FileMode.CreateNew, ・・・);

しかしこれでも「パスが長すぎるので260文字未満に指定しろ」
という例外が発生してしまいます。

プレフィックスの設定方法が間違っているのか、
もっと違う方法があるのか、
ご教授いただけるよう、よろしくお願いします。
\が一つ足りないのではないでしょうか?
#試してないので間違っていたらすみません。

> string szFileName = @"\?\c:\・・・・・・・\result.csv";

string szFileName = @"\\?\c:\・・・・・・・\result.csv";
■No19920に返信(よねKENさんの記事)
> \が一つ足りないのではないでしょうか?
> #試してないので間違っていたらすみません。
>
>>string szFileName = @"\?\c:\・・・・・・・\result.csv";
>
> string szFileName = @"\\?\c:\・・・・・・・\result.csv";
>

レスありがとうございます。
ネットで調べた所、"\?\"と記述しているものと"\\?\"と記述しているものがあり
両方試してみましたが結果は同じでした。
何箇所かで見かけた方法ですが、ダメでしたか。
それではWindows APIのGetShortPathName関数を使う方法はどうでしょうか?

参考URL(投稿エラー回避のため、「jp」の手前にスペースを入れています。)
http://www.naggy.bne. jp/cs.net/2006/05/post.html
■No19924に返信(よねKENさんの記事)
> 何箇所かで見かけた方法ですが、ダメでしたか。
> それではWindows APIのGetShortPathName関数を使う方法はどうでしょうか?
>
> 参考URL(投稿エラー回避のため、「jp」の手前にスペースを入れています。)
> http://www.naggy.bne. jp/cs.net/2006/05/post.html

ありがとうございます。
GetShortPathName()にて無事に解決することができました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板