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

时间:2013-06-17 07:11:49

标签: c# express xcopy

早上好,

我正在创建一个小型应用程序作为学习项目的一部分。我使用的是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();
        }        
    }
}    

出于某种原因,只复制data1.txt和data2.txt而没有问题。其余部分未复制。另外,为什么我的循环永远不会达到4/4?

3 个答案:

答案 0 :(得分:0)

在系统中有一个库,IO。这包含各种方便的花花公子功能,如: File.Copy看看里面或结帐msdn

答案 1 :(得分:0)

尝试代替长度&lt; - &gt;计数

for (int i = 0; i < allFilesInSourceFolder.Length; i++)
for (int i = 0; i < allFilesInSourceFolder.Count; i++)

答案 2 :(得分:0)

这严格来说是一个安全问题。它在过去通过简单地调用IT将我添加到某个安全组来解决。