タイトル : Re^4: 使用中のファイルを削除(移動)する方法 投稿日 : 2007/12/05(Wed) 20:12 投稿者 : mathar
花ちゃんさん・スクリプトプログラマさん ご回答ありがとうございます。 > ファイルが使用中・・のエラーがでるなら、ファイルが使用中 だからでは。 > imgFile はどのようになっているのですか? Dim imgFile As String = Me.List1.Text 'ピクチャーボックスに表示したjpgファイルのフルパス > 多分、最初の処理の部分(未掲載の部分)でファイルをロック(使用中)しているかと > 思うので、一度最初の部分等をコメントにして確認してみて下さい。 bmp.Dispose() これでロック解除出来ていると思うのですが・・・ > 又、せっかくのコードなので動作確認できるようにするとこちらでも確認できるし > コメントが入っていると何をやりたい(やろうとしているのか)のかが掴めるのですが > Dim i As Integer > For i = 0 To bmp.PropertyItems.Length - 1 > Dim pi As System.Drawing.Imaging.PropertyItem = bmp.PropertyItems(i) 'Exif情報から日付関係を探す > If pi.Id = &H132 Or pi.Id = &H9003 Or pi.Id = &H9004 And pi.Type = 2 Then '値を変更する > pi.Value = System.Text.Encoding.ASCII.GetBytes( _ > Nitiji + ControlChars.NullChar) > pi.Len = pi.Value.Length '設定する > bmp.SetPropertyItem(pi) > End If > Next i > Dim File_Name As String = System.IO.Path.GetFileName(imgFile) > Dim FullPath As String = "D:\ChangeFile\" & File_Name '"D:\ChangeFile\" & File_Name へ保存する > bmp.Save(FullPath, System.Drawing.Imaging.ImageFormat.Jpeg) > bmp.Dispose() > 'ここまでは出来ます。 FileStreamオブジェクトを使用して画像のロックを解除 > Dim fs As System.IO.FileStream > fs = New System.IO.FileStream(imgFile, IO.FileMode.Open, IO.FileAccess.Read) > Me.Picture1.Image = System.Drawing.Image.FromStream(fs) > fs.Close() > Dim fi As New System.IO.FileInfo(imgFile) > > Try > fi.Delete()'ここで必ずエラーとなります。 > Catch ex As Exception > MessageBox.Show(ex.Message) > End Try こんな感じです・・・。 > ファイルの削除はタイミングエラーが発生し得るものです。 > (エクスプローラが見に行ったりするので) > 暫時置いて数回リトライしてみては。 何度かリトライしてみたら、なんと出来ました!!(する時で回数は変わります・・) 1回で削除・移動する方法など無いものですかね・・ |