none
CopyDirectory & 排序 RRS feed

  • 問題

  • 當使用 CopyDirectory 時,可有參數設定? 令被複製到目的 F:\ 的目錄及檔案順序相同於來源 C:\Temp ? 以下是我的寫法:

            Try
                My.Computer.FileSystem.CopyDirectory("C:\Temp", "F:\", _
                   FileIO.UIOption.AllDialogs, FileIO.UICancelOption.ThrowException)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

    2007年6月6日 上午 03:24

解答

  • 你的順序是指無指定排序規則下的順序?

     

    若是這樣,沒有辦法指定,這是檔案系統的問題,並非是程式的問題。

    檔案系統本身在目錄存取 FAT 與 NTFS 不同,FAT 是從目錄區塊找出空的位置來放新檔案,只有在完全乾淨的目錄下,才會依照複製順序排序。若是 NTFS ,本身是整顆磁碟來產生隨機絕對代號後,在指給檔案使用,這個不知道整顆磁碟 F 掉以後,會不會依照複製順序。套句網路上很火紅的話:可以砍掉重練。

     

    若是指依照檔名、大小、時間等指定排序規則的順序,來源與目的檔案相同,當然排出來就會相同。

     

    若是兩者都不是,可見你題目問的有多簡短,怎樣都猜不出來了,請補充你的問題。

    2007年6月7日 上午 03:51
    版主

所有回覆

  • 你的順序是指無指定排序規則下的順序?

     

    若是這樣,沒有辦法指定,這是檔案系統的問題,並非是程式的問題。

    檔案系統本身在目錄存取 FAT 與 NTFS 不同,FAT 是從目錄區塊找出空的位置來放新檔案,只有在完全乾淨的目錄下,才會依照複製順序排序。若是 NTFS ,本身是整顆磁碟來產生隨機絕對代號後,在指給檔案使用,這個不知道整顆磁碟 F 掉以後,會不會依照複製順序。套句網路上很火紅的話:可以砍掉重練。

     

    若是指依照檔名、大小、時間等指定排序規則的順序,來源與目的檔案相同,當然排出來就會相同。

     

    若是兩者都不是,可見你題目問的有多簡短,怎樣都猜不出來了,請補充你的問題。

    2007年6月7日 上午 03:51
    版主
  • 經查看 CopyDirectory 無法依照原本未排序的順序,進行複製動作,所以已改用 .CopyFile 方式進行,程式碼如下:

            Dim srcFile, destFile, tmpStr As String
            Dim CntCompare As Int32 = 0

            With My.Computer.FileSystem
                For Each srcFile In .GetFiles(srcDir, FileIO.SearchOption.SearchAllSubDirectories)
                    CntCompare += 1
                    destFile = srcFile.Replace(srcDir, destDir.Substring(0, 2))
                    .CopyFile(srcFile, destFile, True)
                    tmpStr = String.Format("{0} of {1}", CntCompare, TotalFiles)
                    Me.BeginInvoke(New DelegateHelpBar(AddressOf HelpBar), New Object() {lvwIndex, tmpStr})
                Next
            End With

    已可完成未排序過的目錄及檔案,複製到目的磁碟機

    Thanks!   T.L. Cheng

    2007年6月7日 上午 04:23