C# 只有部分文件从sourceFolder复制到destinationFolder

C# 只有部分文件从sourceFolder复制到destinationFolder,c#,express,xcopy,C#,Express,Xcopy,早上好 作为学习项目的一部分,我正在创建一个小应用程序。我使用的是Visual Express 2010,语言是C# 我设置了两个文件夹(destinationFolder和sourceFolder)。第一个包含以下文件: data1.txt, data2.txt, data3.txt, data4.txt 第二个包含完全相同的文件,但其中写入了“v2” 应用程序应该获取sourceFile中的所有文本文件并复制它们,覆盖destinationFolder中的文件,这样它们也会在其中写入“v2

早上好

作为学习项目的一部分,我正在创建一个小应用程序。我使用的是Visual Express 2010,语言是C#

我设置了两个文件夹(destinationFolder和sourceFolder)。第一个包含以下文件:

data1.txt, data2.txt, data3.txt, data4.txt
第二个包含完全相同的文件,但其中写入了“v2”

应用程序应该获取sourceFile中的所有文本文件并复制它们,覆盖destinationFolder中的文件,这样它们也会在其中写入“v2”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Updater
{
    class Program
    {
        static void Main(string[] args)        
        {
            Console.WriteLine("--- (!) APP UPDATER (!) ---");
            Console.WriteLine("press enter to begin update");
            Console.ReadLine();

            string sourceFolder = "C:\\Users\\Desktop\\sourceFolder";

            Console.WriteLine("--- updating --- beginning update");

            string destinationFolder = AppDomain.CurrentDomain.BaseDirectory; // from where .exe is run

            string[] allFilesInSourceFolder = System.IO.Directory.GetFiles(sourceFolder);
            string[] allFilesInDestinationFolder = System.IO.Directory.GetFiles(destinationFolder);

            Console.WriteLine("getting data from " + sourceFolder);
            Console.WriteLine("beginning copy in " + destinationFolder);
            Console.WriteLine("");

            for (int i = 0; i < allFilesInSourceFolder.Length; i++)
            {                    
                System.IO.File.Copy(allFilesInSourceFolder[i], allFilesInDestinationFolder[i], true);
                Console.WriteLine("--- (!) updating (!) --- copying file " + i + "/" + allFilesInSourceFolder.Length);

            }
            Console.WriteLine("");
            Console.WriteLine("--- UPDATE FINISHED --- press enter to exit");
            Console.ReadLine();
        }        
    }
}    
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
名称空间更新程序
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“--(!)应用程序更新程序(!)--”;
Console.WriteLine(“按enter开始更新”);
Console.ReadLine();
string sourceFolder=“C:\\Users\\Desktop\\sourceFolder”;
Console.WriteLine(“---更新---开始更新”);
string destinationFolder=AppDomain.CurrentDomain.BaseDirectory;//从何处运行.exe
字符串[]allFilesInSourceFolder=System.IO.Directory.GetFiles(sourceFolder);
string[]allFilesInDestinationFolder=System.IO.Directory.GetFiles(destinationFolder);
Console.WriteLine(“从“+sourceFolder”获取数据);
Console.WriteLine(“在“+destinationFolder”中开始复制);
控制台。写线(“”);
for(int i=0;i

由于某些原因,只有data1.txt和data2.txt被复制而没有问题。其余部分没有被复制。还有,为什么我的循环从未达到4/4?

在系统中有一个库,IO。它包含各种方便的功能,如: 文件。复制查看文件内部或签出尝试而不是长度计数

for(int i=0;i
这完全是一个安全问题。在过去,只需简单地调用它将我添加到某个安全组中,就可以解决此问题。

是否有错误?您的屏幕上没有四次
更新
?您能给出控制台输出的内容吗?不,不。例如,sourceFolder中的文件写入了v2,而destinationFolder中的文件写入了v1。我想用sourceFolder中的文件替换destinationFolder中的文件。我将在2分钟后附加输出确定,这很奇怪。所有四个文件现在都被复制。我什么都没变。有时我会收到错误消息:“进程无法访问文件'D:\Documents And Settings\my Documents\visual studio 2010\Projects\Updater\Updater\bin\Release\Updater.exe',因为它正被另一个进程使用。”在循环内的这一行中:System.IO.file.Copy(allFilesInSourceFolder[I],allFilesInDestinationFolder[I],true);你最后的评论是一个新问题吗。。。?
for (int i = 0; i < allFilesInSourceFolder.Length; i++)
for (int i = 0; i < allFilesInSourceFolder.Count; i++)