[英]Files Copied in the Dropbox folder are treating differently than the original file names
我正在使用Windows 10,并且有两个文件夹,即Source和Destination 。 Destination文件夹在Dropbox内部。 我有两种方法CopySourceFilesToDestination和SynchronizeSourceAndDestination 。 第一种方法将所有文件夹和文件从源复制到目标,而第二种方法检查源文件夹中是否存在特定的文件名,如果未在源文件中找到文件名,则从目标文件夹中删除特定文件。 现在,我有几个命名如下的文件,并且不需要关心文件中的内容。
E:\\ Source \\ A0000000001 \\ 20162356312-历史中乌托邦的未来。 海登·怀特。 Historein 7.pdf
E:\\ Source \\ T0000000142 \\20162350775-ÉtienneGeoffroy Saint-Hilaire,1772-1844年,一位有远见的博物学家。 埃尔维·盖亚德(HervéLe Guyader).pdf
E:\\ Source \\ T0000000403 \\ 2016242657-独行者的尊敬; 植物著作; 和给弗朗索尔的信。 让·雅克·卢梭.pdf
E:\\ Source \\ T0000000428 \\ 2016243154-文学科学-不可估量的差异.HelmutMüller-Sievers.pdf
当我运行程序时,会将文件复制到目标位置,但是我的SynchronizeSourceAndDestination方法会删除所有文件,并且期望列表中的第一个文件不包含任何UTF-8字符。
using System;
using System.IO;
namespace DropboxDemo
{
class Program
{
private static string lookupDirectory = @"E:\Source";
private static string backupDirectory = @"C:\Users\SIMANT\Dropbox \Destination";
static void Main(string[] args)
{
Console.WriteLine("Please wait while copying files.");
CopySourceFilesToDestination(lookupDirectory);
Console.WriteLine("Please wait while synchronizing files.");
SynchronizeSourceAndDestination(backupDirectory);
Console.ReadLine();
}
public static void SynchronizeSourceAndDestination(string dir)
{
foreach (string file in Directory.GetFiles(dir))
{
string destFilePath = file.Replace(backupDirectory, lookupDirectory);
if (!File.Exists(destFilePath))
{
// Delete file from Backup
File.Delete(file);
}
}
foreach (string directory in Directory.GetDirectories(dir))
{
string destinationDirectory = directory.Replace(backupDirectory, lookupDirectory);
if (!Directory.Exists(destinationDirectory))
{
Directory.Delete(directory, true);
continue;
}
SynchronizeSourceAndDestination(directory);
}
}
public static void CopySourceFilesToDestination(string dir)
{
foreach (string file in Directory.GetFiles(dir))
{
string destFilePath = file.Replace(lookupDirectory, backupDirectory);
if (!File.Exists(destFilePath))
{
File.Copy(file, destFilePath);
}
else
{
// Override the existing file
File.Copy(file, destFilePath, true);
}
}
foreach (string directory in Directory.GetDirectories(dir))
{
//Create directory if not present in the destination
string destinationDirectory = directory.Replace(lookupDirectory, backupDirectory);
if (!Directory.Exists(destinationDirectory))
{
Directory.CreateDirectory(destinationDirectory);
}
CopySourceFilesToDestination(directory);
}
}
}
}
第二次,我只是将所有文件从Destination(位于Dropbox内)复制到Source文件夹中,然后重新运行该程序,现在它不会删除文件。 为什么我会得到这种行为? 我认为,将文件复制到Dropbox时,它以不同的方式表示相同的文件名(我们从我的眼中看到的)。 您能帮我解决这个问题吗?
为了使我的解决方案可行,我通过按É (Alt + 144) ,é (Alt + 130)更改了扩展ASCII字符。 我认为这是因为文件创建者直接进行了一些字符复制和粘贴。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.