簡體   English   中英

如何在C#中將文件從一個文件夾復制到另一個文件夾?

[英]How to copy file from one folder to another in C#?

我的項目中有一個備份文件夾和一個主文件夾。 我在主菜單中為用戶提供了一個從備份文件夾中打開文件的選項。 為此,我編寫了代碼:

        string[] paths;
        string fullpath = "";
        paths = Directory.GetFiles(backuppath);
        foreach (string backupfilepath in paths)
        {
            if (path.EndsWith(".txt"))
                fullbackupfilepath = backupfilepath;
        }

這里的backuppath是備份文件的路徑。 現在,我將此備份文件復制到主項目文件夾中:

         File.Copy(fullbackupfilepath, mainprojectfilepath);

但是我收到了找不到文件C:\\ Users \\ me \\ Desktop \\ csharpproject \\ bin \\ debug \\ BackupProject.txt的錯誤

當我的項目位於MyDocuments \\ Myproject中時,為什么將它放入bin調試文件夾中。 該Myproject文件夾中有backupfolder。 請協助解決。

如果使用相對路徑而不是絕對路徑,則在運行時基本文件夾是可執行文件所在的文件夾。 在調試模式下,它是bin / debug。

建議不要在程序目錄中完全包含用戶文件。 即,如果將程序安裝在Windows Vista或7 programms文件夾中,則需要管理員權限才能寫入此目錄。

您應該看看Environment.SpecialFolder

string yourAppPath = Path.Combine(
       Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
       "YourApp");

這段代碼將為當前用戶生成一個路徑,您可以在其中存儲文件。

當您從Visual Studio運行程序時,它將被編譯到項目的/bin/debug子文件夾中,並從那里運行。 這也反映在應用程序內部的路徑中。

您可以像將代碼文件一樣將文件添加到項目中,並在其屬性中選擇“ Copy to output directory: Copy if newer' to make sure that the file is present in the bin / debug`文件夾中。 如果不想使其成為項目的一部分,可以選擇將文件手動復制到那里。

在調試模式下,應用程序目錄與可執行文件(.exe)目錄相同。 因此,需要將backupfolder添加到bin文件夾,但是它僅對您有效,並且在發布給某些用戶之后,他們將無法捕獲backupfolder

我認為一種解決方案是將要使用的文件的backupfolder文件backupfolder添加到Visual Studio項目中,然后將該文件的“不復制”選項設置為“始終復制”。 如果將backupfolder包含在部署中,則可以確保發布后backupfolder的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM