none
如何以API複制簡中檔名的檔案到其他資料夾但必須有進度表???? RRS feed

  • 問題

  • 請問各位大大如何以API複制簡體中文檔名的檔案到其他資料夾,本人在執行複制時文字會出現"?"之後會出現"檔案名稱不符或檔案數目不正確",請授受一下吧。謝謝!!
    2006年12月23日 上午 03:05

解答

所有回覆

  • HI,

    您可以呼叫SHFileOperation試試看, 會自動出現進度表

    tihs

    2006年12月24日 上午 01:10
  • 你所說的我之前有試過但是卻不能複制簡體的檔名的檔案,我是有用了另一個  My.Computer.FileSystem.CopyFile()和My.Computer.FileSystem.CopyDirectory()但是雖然有支援簡中文檔名卻不支援多層目錄多層檔案複制,請問有另外的API可用嗎??

    謝謝你的回覆 ^^

     

    2006年12月25日 上午 10:26
  • HI,

    如果不是95和98的系統, Windows應該有支援Unicode, 如果是95和98的系統, 可以到以下的網址下載並安裝支援Unicode的軟體

    http://msdn2.microsoft.com/en-us/library/ms812865.aspx

    tihs

    2006年12月26日 上午 12:02
  • 大大謝謝你的回覆

    目前為了要使所寫的程式使用在XP系統上,應客戶的要求為了能看到所有複制的進度及時間長久,以致有目前的問題,且用戶端不只一台電腦所使用的電腦OS皆是XP,所以UNICODE應不是問題,而之前大大所述之API之所以不能使用我所找到的原因為只支援ANSI碼而UNICODE只支援部份而會產生"?"的字元以到複制時會因名稱不符及含不正確字元而不能複制,但是我以手動選取多檔複制時且內含UNICODE檔名,XP會有可複制之進度表,所以我認為應有另一API可使用或是有另一字元轉換的方法,以請各位大大不吝授受。

    2006年12月26日 上午 08:53
  • 如果真的都沒辦法,就自己做一個吧。

    提示:

    • 背景作業,使用 BackgroundWorker,很好用。
    • 資料夾深度探索,可使用遞迴方法,然後和 System.IO.DirectoryInfo 搭配。
    • 檔案複製,可以用 File.Copy() 方法。
    • 先統計資料夾深度和個數,以及檔案的個數做為進度列的最大值,然後再由 BackgroundWorker 來啟動處理程式,用 ReportProgress() 來回報進度,並且更新你的進度列。
    2006年12月26日 上午 09:01
    版主
  • HI,

    那您目前是用什麼方法執行檔案複製? 如果XP可以執行無誤, 我們的程式也可以才對, 如果您是呼叫API, 有可能是字串轉換出現問題

    tihs

    2006年12月27日 上午 12:13
  • 謝謝各位賜教

    我已找到了方法,是使用shfileoperationW

    2007年1月1日 上午 06:35