// copy given file from source to target directory if appropriate public void SynchronizeFile(string file) { if (SourceAccessor.FileExists(file)) { if (CopyFile(file)) { #if DEBUG Console.WriteLine("copying from {1} to {2}: {0}", file, SourceAccessor, TargetAccessor); #endif using (var sourceStream = SourceAccessor.GetFileContents(file)) { DateTime writeTime = SourceAccessor.GetLastWriteTime(file); int attributes = SourceAccessor.GetFileAttributes(file); TargetAccessor.WriteFile(file, sourceStream, writeTime, attributes); } synchronizedFiles.Add(file); } } else if (DeleteAdditionalFiles && TargetAccessor.FileExists(file)) { #if DEBUG Console.WriteLine("deleting {0} from {1}", file, TargetAccessor); #endif TargetAccessor.DeleteFile(file); synchronizedFiles.Add(file); } }
// delete all files that are in the target, but not source directory void DeleteFilesFromTarget(string baseDir) { // no directory? no files to delete if (!TargetAccessor.DirectoryExists(baseDir)) { return; } foreach (string filename in TargetAccessor.GetFiles(baseDir)) { SynchronizeFile(filename); } foreach (string subDirectory in TargetAccessor.GetDirectories(baseDir)) { DeleteFilesFromTarget(subDirectory); } }