亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將目錄中的所有文件移動到新目錄

將目錄中的所有文件移動到新目錄

C#
慕哥9229398 2021-11-28 18:49:13
我有一個 C# Windows 窗體應用程序,我想將桌面上的所有文件移動到另一個目錄。出于測試目的,我剛剛在桌面上創建了一個名為“Test”的文件夾,我希望在其中移動文件。當第一個表單打開時,我會正確運行此代碼:try        {            string dest = @"C:\Users\Billeh\Desktop\Test\";            string[] files = Directory.GetFiles(@"C:\Users\Billeh\Desktop\");            foreach (var file in files)            {                File.Move(file, dest);            }        } catch (Exception e)        {            MessageBox.Show(e.ToString());        }然而,這似乎沒有任何作用。它只是繼續打開表單,就像它被跳過一樣。沒有消息框彈出,我知道它沒有被跳過,因為如果我讓它在 try 語句中彈出一個隨機消息框,它會很好地出現。我不知道出了什么問題,任何幫助表示贊賞。
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

File.Move需要目標文件,而不僅僅是目標文件夾。您需要決定如何命名目標文件夾中移動的文件。它可以是與源文件相同的名稱,也可以是您選擇的其他名稱。如果您想保留舊名稱,Path.GetFilename 可能會有所幫助。


另請注意,EnumerateFiles比 GetFiles 更好,因為它允許您啟動移動操作,而無需先加載內存中的所有文件名。


try

{

    string dest = @"C:\Users\Billeh\Desktop\Test";

    foreach (var file in Directory.EnumerateFiles(@"C:\Users\Billeh\Desktop\")

    {

        string destFile = Path.Combine(dest, Path.GetFileName(file))

        if(!File.Exists(destFile))

            File.Move(file, destFile);


    }

catch (Exception e)

{

    MessageBox.Show(e.ToString());

}

還要考慮 File.Move 不能覆蓋目標文件夾中的現有文件。如果文件存在,則會引發 IOException。所以,如果你想覆蓋你需要刪除目標文件之前,但無論如何,你需要添加一個檢查File.Exists


查看完整回答
反對 回復 2021-11-28
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

您可以使用Directory.Move(string, string)方法,而不是逐個文件移動文件。

句法

   Directory.Move(sourceDirPath, DestinationDirPath)


查看完整回答
反對 回復 2021-11-28
  • 2 回答
  • 0 關注
  • 327 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號