繁体   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