none
VB6 檔案複製的效能分析 RRS feed

  • 問題

  • 小弟想跟各位高手討論一下...

     

     

    依目前所學的只知道2種複製檔案的方式, 我想討論的是...那一種方法傳輸最快

     

    聽朋友說不經過Parttion的方法會比較快!!...我也不太懂他在說什麼 .

     

    請問各位先進....例如以10MB檔案來說...在VB6裡

     

    有什麼檔案複製方式或方法能比一般的shell跟FileSystemObject還快呢...

     

     

     

     

     

    第一種

     

    宣告法

    Code Snippet

    Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    Type SHFILEOPSTRUCT
    hWnd As Long '呼叫的視窗
    wFunc As Long '操作功能
    pFrom As String '來源檔案或資料夾
    pTo As String '目的檔案或資料夾
    fFlags As Integer '額外選項
    fAborted As Boolean '是否允許被中斷
    hNameMaps As Long '檔名對照表
    sProgressTitle As String '進度對話框的Title,fFlags含&H100時才有作用
    End Type

     

     

    按鈕

    Code Snippet
    Private Sub Command1_Click()
    Dim aa As SHFILEOPSTRUCT
    aa.pFrom = Text1.Text
    aa.pTo = Text2.Text
    aa.wFunc = &H2
    aa.fAborted = True
    aa.fFlags = &H4
    SHFileOperation aa
    End Sub

     

     

    wFunc
    功能
    &H1 搬移
    &H2 複製
    &H3 刪除
    &H4 更名

     

    fFlags
    功能
    &H1 使用多重檔案
    &H2 使用多重檔案
    &H4 不顯示進度對話框
    &H8 如果目的有相同的檔名,不顯示更名對話框
    &H10 不顯示確認對話框
    &H40 允許可以復原上一步
    &H100 簡式進度對話框
    &H200 不顯示是否建立資料夾對話框

     

     

    第二種

     

    引用項目 " Microsoft Scripting Runtime "

    Code Snippet

    Dim fs As New FileSystemObject

    fs.CopyFile Text1.Text, Text2.Text

     

     

     

     

     

     

     

     

     

     

     

    2008年6月10日 上午 03:44

解答

  • HI,

     

    第一種是利用Windows API來進行檔案複製, 應該是最快的, 第二種會透過元件來做, 速度不會比較快, 如果要更快, 可以考慮自行用C函數, 一次配置足以容納全部檔案內容的記憶體, 一次就讀入檔案全部的內容, 再寫入到另外一個檔案, 因為不顯示一些有的沒有的進度表和動畫, 有機會比第一種快

     

    tihs

     

    2008年6月10日 上午 06:04

所有回覆

  • HI,

     

    第一種是利用Windows API來進行檔案複製, 應該是最快的, 第二種會透過元件來做, 速度不會比較快, 如果要更快, 可以考慮自行用C函數, 一次配置足以容納全部檔案內容的記憶體, 一次就讀入檔案全部的內容, 再寫入到另外一個檔案, 因為不顯示一些有的沒有的進度表和動畫, 有機會比第一種快

     

    tihs

     

    2008年6月10日 上午 06:04
  • 感謝 tihs的解答...我會去研究看看

     

    2008年6月10日 上午 08:21