3
(Source)
한 폴더에서 모든 파일을 다른 폴더 (Destination)
으로 복사해야합니다. 또한 두 폴더의 내용이 이름과 정확히 일치하는 경우 두 폴더를 비교하고 100에서 멈추는 카운터를 증가시켜야합니다.두 개의 다른 폴더에서 파일을 비교하고 조건부 복사 수행
각 파일의 크기와 이름을 비교할 필요가 없습니다.
이것은 내가 시도했지만 위에서 설명한대로 원하는 결과를 얻지 못합니다.
여기 자원의 일부를 참조하고 있습니다 : http://msdn.microsoft.com/en-us/library/bb546137.aspx
class Program
{
class FileCompare : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo>
{
public FileCompare() { }
public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
{
return (f1.Name == f2.Name &&
f1.Length == f2.Length);
}
public int GetHashCode(System.IO.FileInfo fi)
{
string s = String.Format("{0}{1}", fi.Name, fi.Length);
return s.GetHashCode();
}
}
static void Main(string[] args)
{
int i = 1;
string sourcePath = @"C:\Users\Administrator\Desktop\Source";
string destinationPath = @"C:\Users\Administrator\Desktop\Dest";
string fileName = System.IO.Path.GetFileName(sourcePath);
string source = System.IO.Path.Combine(sourcePath, fileName);
string destination = System.IO.Path.Combine(destinationPath, fileName);
System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(sourcePath);
System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(destinationPath);
IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*",
System.IO.SearchOption.AllDirectories);
IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*",
System.IO.SearchOption.AllDirectories);
string[] files = System.IO.Directory.GetFiles(sourcePath);
foreach (string s in files)
{
fileName = System.IO.Path.GetFileName(s);
destination = System.IO.Path.Combine(destinationPath, fileName);
System.IO.File.Copy(s, destination, true);
FileCompare myFileCompare = new FileCompare();
bool areIdentical = list1.SequenceEqual(list2, myFileCompare);
while (areIdentical != true)
{
Console.WriteLine(i++);
}
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
너무 가깝습니다. "그러나 나는 위에서 기술 된 바대로 욕망 결과를 얻지 못한다."- 그러나 당신이 얻는 결과는 무엇이며, 이것은 당신이 원했던 것과는 어떻게 다른가? –
나는 가까이에 있는지 확신하지 못한다. :) 증분이 작동하지 않습니다 및 while 루프를 사용하여 부울 평가 문제가 있습니다. 위 코드를 실행하면 무한 루프가 발생하며 비교 부분이 작동하지 않는 것처럼 보입니다. – Asynchronous
나는 그 질문이 완벽하게 "너무 가까이"제시되었다는 것을 의미했다. 그러나 그것은 몇몇 특성을 놓치고있다; 당신은 사람들이 그 세부 사항을 제공한다면 좋은 대답을 제공하는 것을 도울 수 있습니다. 무슨 일이 일어나고, 어떻게 일어나고 싶었는지 다른 점을 자세히 설명하십시오. –