- 締切済み
ファイルコピーの事で質問です。
質問ですが、 'フォルダセット Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop fbd.SelectedPath = Environment.SpecialFolder.Desktop 'コピー System.IO.File.Copy(fbd.SelectedPath & "\test.pak", System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) & "\test.pak") フォルダを選択した後、 そのフォルダ内の「test.pak」をコピーして、 プログラムファイルを取得して、取得した先の場所に保存したいのですが、 これをデバッグすると、怒られてしまいます。 "(C:\Program File\test.pak) の一部が見つかりませんでした" という怒られ内容です。 ドコモ間違ってないのに、この様なエラーが出てしまうのですが 何処が悪いのでしょうか?どの様な改善をすれば良いでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nishito24
- ベストアンサー率90% (10/11)
補足に貼り付けられているコードでは当然そうなります。 ShowDialog()の戻り値の意味を理解してください。 ---------------------------------------------- Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop If (fbd.ShowDialog() <> Windows.Forms.DialogResult.OK) Then MsgBox("キャンセルされたよ") Return End If MsgBox(fbd.SelectedPath)'選択されたフォルダの確認が目的なので実際は不要 System.IO.File.Copy(fbd.SelectedPath & "\test.txt", "c:\test\test1.txt", True)'ここでコピーを実行 ---------------------------------------------- 又は ---------------------------------------------- Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop If (fbd.ShowDialog() = Windows.Forms.DialogResult.OK) Then MsgBox(fbd.SelectedPath)'選択されたフォルダの確認が目的なので実際は不要 System.IO.File.Copy(fbd.SelectedPath & "\test.txt", "c:\test\test1.txt", True)'ここでコピーを実行 Else MsgBox("キャンセルされたよ") End If ---------------------------------------------- Copyの3番目の引数は、コピー先に同じファイル(test1.txt)がある時に上書きする指定です。
- nishito24
- ベストアンサー率90% (10/11)
フォルダ選択するダイアログが表示されていないためです。 fbd.ShowDialog()が必要。 fbd.SelectedPath には、ダイアログでOKを押した時に選択されたパスが設定されます。 こんな感じです Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop If (fbd.ShowDialog() <> Windows.Forms.DialogResult.OK) Then MsgBox("キャンセルされたよ") Return End If MsgBox(fbd.SelectedPath)
- bluecampus
- ベストアンサー率66% (138/209)
>fbd.SelectedPath & "\test.pak" をPath.Combineを使ってパスを組立て、File.Existsで存在を確認してから Copyするようにしてみては? Dim sorcePath As String Dim destPath As String sorcePath = System.IO.Path.Combine(fbd.SelectedPath, "test.pak") If Not System.IO.File.Exists(sorcePath) Then MessageBox.Show("ファイルがネーヨ") End If
補足
ご回答有難うございます。 確実にそこにはファイルがあるので、存在確認は必要ありません。 一応内容を試してみましたが、同じ様なエラーがおきます。 一番問題にしているのが、 copyです。存在確認済なのに必ず System.IO.File.Copy(fbd.SelectedPath & "\test.pak", (ここの文字がC:\)以外の記載だとパスが認識されない という事です)) 恐れ入りますが、教えて下さい。><
- bluecampus
- ベストアンサー率66% (138/209)
OSはWindows Vistaでしょうか? Vistaである場合、ユーザアカウント制御(UAC)のため、 管理者権限で実行していないアプリケーションから >System.Environment.SpecialFolder.ProgramFiles のようなディレクトリを容易に変更できないようになっています。 本当にそこに置くべきか検討した方が良いでしょう。 一般的なアプリケーションではそのようなディレクトリにファイルを作ったりしませんし。
補足
補足です。 環境は ・WinXP SP3 だけです。 Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop fbd.SelectedPath = Environment.SpecialFolder.Desktop Dim Down As New FolderBrowserDialog Down.Description = "保存するフォルダを指定して下さい。" Down.RootFolder = Environment.SpecialFolder.Desktop Down.SelectedPath = Environment.SpecialFolder.Desktop 'コピー System.IO.File.Copy(fbd.SelectedPath & "\test.pak", Down.SelectedPath & "\test.pak") この様に別でまた作って保存する場所を指定して、 そこに保存したいのですが、これだと質問内容と同じく 怒られてしまいます。 どうか教えて下さい。
補足
ありがとうございます。 申し訳無いのですが、やはり同じ事をしても認識されません。 http://deai.mokuren.ne.jp/up/src/up0495.jpg 上記の様にわざと "test.txt"or"test1.txt"で作ってみましたが、 「キャンセルされたよ」しか返ってこない・・。 なぜなんでしょうか? お手数おかけします・・。