如何在C#中将文件从一个文件夹复制到另一个文件夹?

时间:2011-06-16 08:00:42

标签: 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 debug文件夹。此Myproject文件夹中有备份文件夹。 请帮助解决。

3 个答案:

答案 0 :(得分:1)

如果使用相对路径而不是绝对路径,则在运行时基础文件夹是可执行文件所在的文件夹。在调试模式下,它是bin / debug。

根本不建议在程序目录中包含用户文件。即如果您在Windows Vista或7 programms文件夹中安装程序,则需要管理员权限才能写入此目录。

你应该看看Environment.SpecialFolder

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

这段代码将为当前用户生成一个路径,您可以在其中存储文件。

答案 1 :(得分:0)

当您从Visual Studio运行程序时,它会被编译到项目的/bin/debug子文件夹中,并从那里运行。这也会反映在应用程序内部的路径中。

您可以像处理代码文件一样将文件添加到项目中,并在其属性中选择Copy to output directory: Copy if newer' to make sure that the file is present in the bin / debug`文件夹。您可以选择手动复制该文件,如果您不想将其作为项目的一部分。

答案 2 :(得分:0)

在调试模式下,应用程序目录与可执行文件(.exe)目录相同。因此,需要backupfolder添加到bin文件夹,但它仅对您有效,并且在发布给某些用户后,他们无法捕获backupfolder

我认为其中一个解决方案是将要使用的backupfolder文件添加到visual studio项目中,然后将该文件的“不复制”选项设置为“始终复制”。如果部署中包含backupfolder,则可以确保在发布后backupfolder的路径。