VB2005 の初心者です。
iniファイルで指定したフォルダ(パス)を読み込んで処理をしたいのですが、指定したパスが誤っている場合は、どのようにチェックすれば良いのでしょうか。
下記サンプルのとおり、System.IO.Path.GetInvalidPathChars()
でチェックする方法があるようですが、ヘルプには「ファイル名やディレクトリ名としては無効なすべての文字が含まれるかどうかは、保証されません。」とあるようです。
実際、"Cd:\<>Work\Test.txt" というパスにすると、チェックはスルーしてしまいました。
Dim filepath As String = "C:\<>Work\Test.txt"
Dim invalidPathChars As Char() = System.IO.Path.GetInvalidPathChars()
For Each invalidChar As Char In invalidPathChars
If filepath.IndexOf(invalidChar) > -1 Then
Console.WriteLine("使用できない文字 " & invalidChar.ToString() & " が含まれています。")
End If
Next
誤ったパスを完全にチェックする方法はあるのでしょうか。
何かヒントになることでも良いので、皆様の知恵をお借りできれば幸いです。
よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
#2です
>無い場合、IO.Directory.CreateDirectory で作成しようとすると、"Cd:\Projects" というフォルダは作成できないのでエラーとなってしまうのです。
「CreateDirectory」の戻り値が「DirectoryNotFoundException」で有ればパスが間違えていると判断できると思いますが。。。
http://msdn.microsoft.com/library/ja/default.asp …
余り深く考えず、「CreateDirectory」がエラーで失敗すると言う事はパスに何らかの問題があると考えられますから、そこで判断するだけでも十分かと思います。
再度の回答、本当にありがとうございます!
CreateDirectory の戻り値が返ってくるとは、調査不足でした。
ただ、実験してみると、戻り値は NotSupportedException でしたが、これでエラーが拾えることが確認できました。
初歩的な質問でしたが、本当にありがとうございました!
No.4
- 回答日時:
ファイルの有無を確認し、なければ作成するとのことですが、ファイルの有無の確認はどのメソッドを使用していますか?
File.Existメソッドを使用しえいる場合は、存在しないパスが指定されてもエラーで落ちることはないはずですが?
よろしかったら、その辺の詳細を教えていただけますか?
この回答への補足
回答ありがとうございます!
おそらく、質問内容のソースは HIROs-NET 様のページを参考にさせていただいたものです。
質問の説明が誤っており、大変申し訳ありません。
System.IO.Directory.Exists でフォルダの有無を確認して、無い場合、IO.Directory.CreateDirectory で作成しようとすると、"Cd:\Projects" というフォルダは作成できないのでエラーとなってしまうのです。
フォルダの有無の確認と、パス自体があり得るパスかどうかの確認は別物ですよね??
完全なパスのチェックはできるのでしょうか??
No.3
- 回答日時:
ファイルの存在確認
System.IO.File.Exists(filePath)
ディレクトリの存在確認
System.IO.Directory.Exists(dirPath)
上記でfalseが返って来た場合はパス自体が間違っているとみなして、パスから再設定させてはいかがですか?
パスの再設定にはFolderBrouwserDialogなどを利用して、確実に存在するパスを指定させれば大丈夫かと。
回答、ありがとうございます!
FolderBrouwserDialog というのがあるのですね。
早速調べてみます。
貴重な情報ありがとうございました。
No.2
- 回答日時:
質問者様のお考えだと、たとえパスに問題が無くても指定されたiniファイルの存在までは判らないですよね。
もっと単純に「ファイルが存在する=パスに不正な文字が無い」と考えて見ては如何でしょう。
ファイルの有無を確認するのであれば、Fileクラスの「Exists メソッド」を使えば出来ます。
Dim filepath As String = "C:\<>Work\Test.txt"
If File.Exists(filepath) Then
Console.WriteLine("ファイルが見つかりました。")
else
Console.WriteLine("ファイルが見つかりません。")
End If
こんな感じで如何でしょう。。。
回答ありがとうございます!
ANo.1 の補足にも記載させていただいたとおり、初回はフォルダが無いため作成し、2回目以降は指定したフォルダで処理(ログをはく)をししたいのです。しかし、 "Cd:\Projects" というフォルダを作成しようとするとエラーとなります。
やはり、フォルダが存在しないなら、エラーとするしかないのでしょうか。
No.1
- 回答日時:
ファイルの有無を確認するのではダメなのでしょうか?
If Not My.Computer.FileSystem.FileExists("ファイルパス") Then
''ファイルが存在しない
End If
など
この回答への補足
早速の回答、ありがとうございます。
質問内容の説明不足で申し訳ありません。
ファイルの有無を確認して、無ければ作成するのですが、その際、パスが誤っているとエラーで落ちてしまうため、最初にパスをチェックしたいのです。
不可能であれば、ファイルの有無の確認をして、無ければエラーとするしかないのかな・・・と思っていますが。
やはり、完全にパスをチェックする方法はないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
VBA★PDFをPDFアプリで印刷し...
-
Excel 相対パス
-
ExcelのVBAで上書き保存を確...
-
【続き】windowsペイントを開く...
-
A列に記載されているフォルダ...
-
ShellExecuteでエクセルファイ...
-
指定したフォルダ内の最新ファ...
-
開いているファイルを削除し、...
-
アクセス 自身のデータベース...
-
エクセルVBAで一つ上の階層...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
AccessからExcel最小化
-
Accessで「ファイルを開く」ダ...
-
【VB6】デバイスマネージャを表...
-
ファイル選択ダイアログからフ...
-
【VB.NET】App.configにファイ...
-
リストボックスにファイル名の...
-
outlook開けない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
エクセルVBAで一つ上の階層...
-
エクセルのマクロで特定フォル...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
指定したフォルダ内の最新ファ...
-
EXCEL(VBA)で指定フォルダ内の...
-
【VB.NET】App.configにファイ...
-
phpに関わる所での、form actio...
-
SaveAsの保存先について
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
VBS パスに変数を入れたい
-
A列に記載されているフォルダ...
-
AccessからExcel最小化
-
C#でのProcess.Startと変数path
-
fopenでのパス指定
おすすめ情報