我已经从多个在线资源创建了一个自动备份脚本,并且我对C#的了解有限,并且由于某种原因,它正在重复第一个Write Line?有人可以帮我吗,我敢肯定这是一个愚蠢的错误,但是我不知道有人擅长C#。这是代码:
是堆栈溢出和vb / c#的新功能,如果有任何愚蠢的错误,我们将深表歉意。
我也确实有尝试和捕捉,但是我删除了它们,希望它们是导致问题的原因,但不是。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
string date = DateTime.Now.ToString("ddMMyy");
string Source = @"G:\Personal\A1";
string Destination = @"D:\_Lil USB Backup\" + date;
if (System.IO.Directory.Exists(Source))
{
if (!System.IO.Directory.Exists(Destination))
{
System.IO.Directory.CreateDirectory(Destination);
}
CopyAllFiles(Source, Destination);
Console.WriteLine("Task Completed successfully.");
Thread.Sleep(5000);
}
else
{
Console.WriteLine("Source does not exist, try plugging the USB in dips**t.");
Thread.Sleep(5000);
}
}
private static void CopyAllFiles(string Source, string Destination)
{
// Get the subdirectories for the specified directory.
DirectoryInfo dir = new DirectoryInfo(Source);
DirectoryInfo[] dirs = dir.GetDirectories();
// Get the files in the directory and copy them to the new location.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string temppath = Path.Combine(Destination, file.Name);
file.CopyTo(temppath, true);
}
foreach (DirectoryInfo subdir in dirs)
{
string temppath = Path.Combine(Destination, subdir.Name);
CopyAllFiles(subdir.FullName, temppath);
}
Console.WriteLine("Successfully copied files.");
}
}
输出到控制台: 成功复制文件。 成功复制文件。 成功复制文件。 任务成功完成。
预期输出到控制台: 成功复制文件。 任务成功完成。
(尽管文件已正确复制)。
答案 0 :(得分:0)
CopyAllFiles()
递归调用CopyAllFiles()
,并且每次调用都会调用WriteLine()语句。因此,您看到的输出与代码和我的期望相符。
我看到的最简单的解决方案是移动
Console.WriteLine("Successfully copied files.");
退出CopyAllFiles()
,进入Main()
函数。