none
請問刪除檔案時發生檔案使用中.... RRS feed

  • 問題

  • 請問刪除舊照片檔案時發生檔案使用中,無法刪除....

    我是用File.Delete(某個舊照片檔案)..

    PS.用意是要換新的照片檔案....

    請各位幫忙...

     

    2006年7月25日 下午 03:15

解答

  • 如果你是正在檢視的話... 請先讀到 MemoryStream 去。先前在舊的討論區有討論過,可參考:

    http://groups.google.com.tw/group/microsoft.public.tw.dotnet.languages.vb/browse_thread/thread/522e08b663509d25

    摘錄部份程式碼:

    寄件人: 璉璉 - 檢視個人簡介
    日期: 2005年1月18日(星期二) 下午10時42分
    電郵地址: 璉璉 <d...@tainan.com.tw.x>
    群組: microsoft.public.tw.dotnet.languages.vb

    你多了這句先前沒說:
    PictureBox2.Image = PictureBox1.Image

    這時會有兩個 PictureBox 參照同一個檔案,所以只把 PictureBox1 釋放是沒用的。

    假定你要刪除,又要顯示出來,那你要用記憶體流來處理,用記憶體流就不需要兩個 PictureBox ,不過我先保留,你自己看看要不要刪掉...

    因為在記憶體流內了,所以不需要等到 PictureBox 顯示才刪除,所以我把刪檔移到前面,你可以放在你需要的位置。

    Dim myFile As Boolean = IO.File.Exists("d:\Temp\PIC_0011.JPG")
    If myFile Then
            Dim ms As New IO.MemoryStream
            Dim fs As IO.FileStream = New IO.FileStream("d:\Temp\PIC_0011.JPG", IO.FileMode.Open)
            Dim nLen As Integer = fs.Length - 1
            Dim arrBytes(nLen) As Byte

            fs.Read(arrBytes, 0, nLen)
            fs.Close()
            ms.Write(arrBytes, 0, nLen)
            IO.File.Delete("d:\Temp\PIC_0011.JPG")

            PictureBox1.Image = Image.FromStream(ms)
            PictureBox2.Image = PictureBox1.Image.Clone
            PictureBox1.Image.Dispose()
            PictureBox1.Image = Nothing
    End If

    2006年7月25日 下午 07:24
    版主

所有回覆

  • 如果你是正在檢視的話... 請先讀到 MemoryStream 去。先前在舊的討論區有討論過,可參考:

    http://groups.google.com.tw/group/microsoft.public.tw.dotnet.languages.vb/browse_thread/thread/522e08b663509d25

    摘錄部份程式碼:

    寄件人: 璉璉 - 檢視個人簡介
    日期: 2005年1月18日(星期二) 下午10時42分
    電郵地址: 璉璉 <d...@tainan.com.tw.x>
    群組: microsoft.public.tw.dotnet.languages.vb

    你多了這句先前沒說:
    PictureBox2.Image = PictureBox1.Image

    這時會有兩個 PictureBox 參照同一個檔案,所以只把 PictureBox1 釋放是沒用的。

    假定你要刪除,又要顯示出來,那你要用記憶體流來處理,用記憶體流就不需要兩個 PictureBox ,不過我先保留,你自己看看要不要刪掉...

    因為在記憶體流內了,所以不需要等到 PictureBox 顯示才刪除,所以我把刪檔移到前面,你可以放在你需要的位置。

    Dim myFile As Boolean = IO.File.Exists("d:\Temp\PIC_0011.JPG")
    If myFile Then
            Dim ms As New IO.MemoryStream
            Dim fs As IO.FileStream = New IO.FileStream("d:\Temp\PIC_0011.JPG", IO.FileMode.Open)
            Dim nLen As Integer = fs.Length - 1
            Dim arrBytes(nLen) As Byte

            fs.Read(arrBytes, 0, nLen)
            fs.Close()
            ms.Write(arrBytes, 0, nLen)
            IO.File.Delete("d:\Temp\PIC_0011.JPG")

            PictureBox1.Image = Image.FromStream(ms)
            PictureBox2.Image = PictureBox1.Image.Clone
            PictureBox1.Image.Dispose()
            PictureBox1.Image = Nothing
    End If

    2006年7月25日 下午 07:24
    版主
  • 哦!

    謝謝璉璉大大,

    我去試試看...

     

    2006年7月27日 下午 04:28