tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルファイルの移動とコピー
記事No7120
投稿日: 2008/03/04(Tue) 03:23
投稿者rar
ダイアログでファイルを読み込みファイルをコピーしたものをimageフォルダに作成
という形をとっているのですが別なプロセスで使用されていますとなってしまいうまく
プログラムが動きません。他にもコピーした先のダミーファイルの名前を変える際
いろいろなところから画像を読み込むので絶対パスをうまく削って名前だけにすることができません。うまく説明がいきませんが、
ファイルを移動させ、コピーする方法をご教授願いたいとおもいます。

Private Sub BtnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRead.Click
    
        Dim ofd As New OpenFileDialog()
        Dim Dummy As String
        Dim ChangeFile As String
        ofd.FileName = ""
        ofd.InitialDirectory = "C:\"
        ofd.Filter = _
            "画像ファイル(*.bmp;*.jpg;*.jpeg;*.gif)|*.bmp;*.jpg;*.jpeg;*.gif"
        ofd.FilterIndex = 1
        ofd.Title = "画像ファイル選択"
        ofd.RestoreDirectory = True

        If ofd.ShowDialog() = DialogResult.OK Then

          System.IO.File.Create("G:\Image\Dummy.jpg")

            ChangeFile = ofd.FileName.Replace("G:\Image\", "")
            Dummy = "G:\Image\Dummy.jpg"
            System.IO.File.Copy(ofd.FileName, Dummy, True)
            My.Computer.FileSystem.RenameFile(Dummy, ChangeFile)

        End If
  
    End Sub

[ツリー表示へ]
タイトルRe: ファイルの移動とコピー
記事No7123
投稿日: 2008/03/04(Tue) 08:21
投稿者花ちゃん
> 別なプロセスで使用されていますとなってしまいうまく
下記の部分でしょうね。(現状では、使用中のままになっている)

>           System.IO.File.Create("G:\Image\Dummy.jpg")


上記説明とコードが合っていないように思うのですが、投稿されてコードが
投稿の為に作成したコードなのか、実際のコードをペーストしたものか?
又、コード自体に何をしているのか(しようとしているのか)コメントを入れて
頂くと解りやすいのですが。(間違いなのか?仕様なのか解らない)

http://hanatyan.sakura.ne.jp/dotnet/file06.htm

[ツリー表示へ]
タイトルRe^2: ファイルの移動とコピー
記事No7127
投稿日: 2008/03/04(Tue) 11:07
投稿者rar
返答ありがとうございます。こういう場での質問になれていないため説明が不十分でした。

Private Sub BtnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRead.Click
    
        Dim ofd As New OpenFileDialog()
        Dim Dummy As String
        Dim ChangeFile As String
        ofd.FileName = ""
        ofd.InitialDirectory = "C:\"
        ofd.Filter = _
            "画像ファイル(*.bmp;*.jpg;*.jpeg;*.gif)|*.bmp;*.jpg;*.jpeg;*.gif"
        ofd.FilterIndex = 1
        ofd.Title = "画像ファイル選択"
        ofd.RestoreDirectory = True


---------------------
ここまでで画像をopendialogを使い選択

        If ofd.ShowDialog() = DialogResult.OK Then

          System.IO.File.Create("G:\Image\Dummy.jpg")
ここでコピー元となるファイルの作成

            ChangeFile = ofd.FileName.Replace("G:\Image\", "")
ここで絶対パスを切り、元となったファイル名だけにする 
            Dummy = "G:\Image\Dummy.jpg"
            System.IO.File.Copy(ofd.FileName, Dummy, True)
ダミーに選択したファイルをコピー
            My.Computer.FileSystem.RenameFile(Dummy, ChangeFile)
ダミーの名前変更
        End If
    End sub

この状態だと画像をいろいろなところから読み込むので絶対パスのそぎ落としがうまくできていません。(ファイルの名前だけ読むものなどあればお願いします。
プログラムとしては、ダイアログで選択したファイルを画像フォルダに移動コピー
元の場所には同じ画像が残る、という感じになります。
説明がまたうまくできていませんがよろしくお願いします。

[ツリー表示へ]
タイトルRe^3: ファイルの移動とコピー
記事No7128
投稿日: 2008/03/04(Tue) 11:27
投稿者ダンボ
> ここで絶対パスを切り、元となったファイル名だけにする 
>             Dummy = "G:\Image\Dummy.jpg"
>             System.IO.File.Copy(ofd.FileName, Dummy, True)

> この状態だと画像をいろいろなところから読み込むので絶対パスのそぎ落としがうまくできていません。(ファイルの名前だけ読むものなどあればお願いします。

Pathの操作ならば、System.IO.Parhクラスが便利ですよ。
http://dobon.net/vb/dotnet/file/pathclass.html

[ツリー表示へ]
タイトルRe^4: ファイルの移動とコピー
記事No7134
投稿日: 2008/03/05(Wed) 21:19
投稿者rar
お返事遅くなりました。ダンボさんありがとうございました。
ファイルパスについては問題解決いたしました。
しかしいまだに他のプロセスで使われているというエラーから抜け出せず困っています。
エラーを抜け出すにはどうすればいいでしょうか?

[ツリー表示へ]
タイトル自己解決できました。
記事No7135
投稿日: 2008/03/05(Wed) 23:01
投稿者rar
  Dim sw As New StreamWriter(Dummy, True, System.Text.Encoding.GetEncoding("Shift_Jis"))
sw.close()

この方法でtxt形式のダミーファイルを作成しこのファイルを上書きすることで
プロセス使用のエラーを潰しました。ありがとうございました。

[ツリー表示へ]