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

C# 如何在C中将文件从一个文件夹复制到另一个文件夹?,c#,C#,我的项目中有一个备份文件夹和一个主文件夹。我在主菜单中为用户提供了从备份文件夹打开文件的选项。为此,我编写了以下代码: string[] paths; string fullpath = ""; paths = Directory.GetFiles(backuppath); foreach (string backupfilepath in paths) { if (path.EndsWith

我的项目中有一个备份文件夹和一个主文件夹。我在主菜单中为用户提供了从备份文件夹打开文件的选项。为此,我编写了以下代码:

        string[] paths;
        string fullpath = "";
        paths = Directory.GetFiles(backuppath);
        foreach (string backupfilepath in paths)
        {
            if (path.EndsWith(".txt"))
                fullbackupfilepath = backupfilepath;
        }
         File.Copy(fullbackupfilepath, mainprojectfilepath);
这里backuppath是备份文件的路径。 现在,我将此备份文件复制到主项目文件夹中:

         File.Copy(fullbackupfilepath, mainprojectfilepath);
但是我得到一个错误,找不到文件C:\Users\me\Desktop\csharpproject\bin\debug\BackupProject.txt

         File.Copy(fullbackupfilepath, mainprojectfilepath);
当我的项目位于MyDocuments\Myproject中时,为什么会进入bin调试文件夹。此Myproject文件夹中有backupfolder。
请帮助提供解决方案。

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

         File.Copy(fullbackupfilepath, mainprojectfilepath);

您可以像添加代码文件一样将文件添加到项目中,并在其属性中选择“复制到输出目录:如果较新,则复制”,以确保文件也存在于bin/debug`文件夹中。如果不想将文件作为项目的一部分,也可以手动将文件复制到其中。

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

         File.Copy(fullbackupfilepath, mainprojectfilepath);
不建议将用户文件放在程序目录中。也就是说,如果您在Windows Vista或7 programms文件夹中安装程序,则需要管理员权限才能写入此目录

         File.Copy(fullbackupfilepath, mainprojectfilepath);
你应该看看Environment.SpecialFolder

         File.Copy(fullbackupfilepath, mainprojectfilepath);

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

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

         File.Copy(fullbackupfilepath, mainprojectfilepath);

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

路径的内容是什么?请把问题弄清楚。你不应该避免将文件写入你的bin目录吗?@Frode:路径的内容是say.txt文件。@David:我不是在将文件写入bin,它是自己添加的。@sas,听起来你就是这么做的。您似乎正在将其复制到与可执行文件相同的文件夹中,这通常被认为是一件坏事:请参阅DanielB的答案。如何更正它?我将继续获取错误,因为此备份文件不在调试文件夹中。它在主文件夹中。当你实际部署它时,它们将在同一个文件夹中,一切都会很好。在部署时,按照我的建议执行操作,将备份文件添加到项目中,并在其属性中设置Copy if newer。然后,当文件被更改时,如果不是来自Visual Studio内部,它将被复制到调试文件夹,并且一切都应该正常。在bin/debug文件夹中创建此文件时,无法访问。您发布的项目位于不同的MyDocuments\Myproject中。另一方面,应用程序正在查找桌面子文件夹C:\Users\me\Desktop\csharpproject\bin\debug\BackupProject.txt。您应该在文件上有一个断点。复制并查看fullbackupfilepath、mainprojectfilepath的实际值是什么。fullbackupfilepath显示MyDocuments\Myproject\Backup\BackupProject.txt,mainprojectfilepath显示MyDocuments\Myproject\project.txt这些是相对路径。您应该使用以驱动器号开头的绝对路径。复制文件夹时,我将无法访问备份文件。请确保在将这些文件选项更改为“始终复制”或“更新时复制”并生成后,要使用的特定文件位于“bin\debug”文件夹下。如果确定,请理解相对路径和绝对路径之间的区别。祝你好运。
         File.Copy(fullbackupfilepath, mainprojectfilepath);