C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: パスの文字数を取得する方法


(過去ログ 141 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■82631 / inTopicNo.1)  パスの文字数を取得する方法
  
□投稿者/ ぼやっきー (1回)-(2017/01/22(Sun) 10:49:55)

分類:[.NET 全般] 

VB.NETです。


Dim fi As FileInfo
For Each fi In dirInfo.GetFiles()
cnt += 1
filepath(cnt) = fi.FullName
Next fi

というコードで、ファイルリストを取得しているのですが
パスの長さが 248 文字未満でない場合、エラーが出ます。
そのため、予め別のプログラムでパスの長さが248文字を超えたものを
リスト化して手作業でリネームしたいと考えています。

そのためパスの文字数を取得するプログラムを書きたいのですが
どのようにすれば良いですか?
普通に考えるとフルパスを取得してLen関数で文字数を取得すれば良いはずですが
今回の場合、ファイルパスが取得できないパスを扱いたいわけなので
どのようにすれば良いですか?





引用返信 編集キー/
■82632 / inTopicNo.2)  Re[1]: パスの文字数を取得する方法
□投稿者/ Azulean (774回)-(2017/01/22(Sun) 11:20:03)
No82631 (ぼやっきー さん) に返信
> そのためパスの文字数を取得するプログラムを書きたいのですが
> どのようにすれば良いですか?

.NET Framework のパス周りの関数はフォルダー名 248 文字、フルパス 260 文字の制限があるので、基本的に .NET Framework のクラス・メソッドでは解決できません。
(Windows 10 の Anniversary Update 以上を利用していて、適切に設定すれば扱えるようにはなります)

> 普通に考えるとフルパスを取得してLen関数で文字数を取得すれば良いはずですが
> 今回の場合、ファイルパスが取得できないパスを扱いたいわけなので
> どのようにすれば良いですか?

Win32 API を使ってどうかだとは思いますが…。
使える関数は限られます。
http://qiita.com/jugemjugemu/items/4db1dfd3d2737d3979df
引用返信 編集キー/
■82633 / inTopicNo.3)  Re[2]: パスの文字数を取得する方法
□投稿者/ ぼやっきー (2回)-(2017/01/22(Sun) 14:12:23)
ありがとうございます。

win32 APIでできました

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -