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

全角スペースがあるフォルダあるとSystem.IO.Directory.GetFilesがエラーになる

環境/言語:[VB.NET]
分類:[.NET]

フォルダ容量サイズ取得を実現させるべく、作っています。

System.IO.Directory.GetFiles("C:\","*.*")
フォルダに全角スペースがあると、エラーになってしまいます。

どう回避すればよろしいでしょうか?

ここのTIPSも同様にエラーになってしまいます。

    dim dirInfo As New DirectoryInfo("C:\")
Dim size As Long = 0

'フォルダ内の全ファイルの合計サイズを計算する
Dim fi As FileInfo

For Each fi In dirInfo.GetFiles()
size += fi.Length
Next fi

以上です。よろしくお願いします。
■No4859に返信(まっくさんの記事)

 まっくさん、こんばんは。深山と申します。

> System.IO.Directory.GetFiles("C:\","*.*")
> フォルダに全角スペースがあると、エラーになってしまいます。

 「フォルダに全角スペースがあると」と仰っていながら、例に挙げられてるのがそうなって
いないのが気になるのですが‥‥

 こちらで実験を行った限り、エラーは発生しませんでした。
 実験をしたのは次のような内容です。
# 環境は Windows XP + .NET Freamwork 1.0

・C:\ 直下に全角スペースをフォルダ名のものが存在する状態で
    System.IO.Directory.GetFiles("C:\","*.*") を実行

・C:\ 直下に全角スペースをファイル名のものが存在する状態で
    System.IO.Directory.GetFiles("C:\","*.*") を実行

・全角スペースを含むパスに全角スペースをファイル名のものが存在する状態で
    System.IO.Directory.GetFiles(パス名,"*.*") を実行


 この感じからすると GetFiles と全角スペースに因果関係はないような気がします。
Microsoft の KB にも GetFiles に関するものはなさそうでしたし、別の処理が原因なのでは
ないでしょうか?

 もし条件付けがよくなかったようでしたら、もう少し詳しい状況を教えて下さいませ。
深山さん、こんばんんは。

私の環境は、XP+.NET Framework1.1 です。

フォルダ名の中間に、全角スペースがある場合は問題ありません。
しかし、全角スペースで終わっているフォルダ名があると、次のエラーがでます。

'System.IO.DirectoryNotFoundException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : パス "C:\システム  管理系     " の一部が見つかりませんでした

というエラーです。

よろしくお願いします。
2004/07/14(Wed) 20:26:16 編集(投稿者)

■No4861に返信(まっくさんの記事)

 まっくさん、こんばんは。深山です。

> フォルダ名の中間に、全角スペースがある場合は問題ありません。
> しかし、全角スペースで終わっているフォルダ名があると、次のエラーがでます。

 こちらでも現象が確認できました。
 どうやら最後の全角スペースを削除して検索しにいってしまっているようですね。
'C:\a' と 'C:\a ' を作成して System.IO.Directory.GetFiles("C:\a ","*.*") を
実行したところ前者が検索され、 'C:\a' が存在しないときには同じように
System.IO.DirectoryNotFoundException が発生してしまいました。

 で、更に実験したところ System.IO.Directory.GetFiles("C:\a \","*.*") とすれば
正常に検索できるようです。
 これでいかがでしょうか?
深山さん、色々と助言ありがとうございます。

¥をつければよかったのですか・・・。

実験していただいたように、
フォルダの後半の全角スペース全部削除されるみたいです。

全角スペース2個以上のフォルダ名であっても、カットされました。
"C:\システム  管理系     "を検索しても実際は、
"C:\システム  管理系"のフォルダ検索されることを確認。

変な仕様ですが、おかげさまで解決しました。
解決済み!

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