У меня есть следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication28
{
class Program
{
static void Main()
{
List<string> dirs = FileHelper.GetFilesRecursive(@"c:\Documents and Settings\bob.smith\Desktop\Test");
foreach (string p in dirs)
{
Console.WriteLine(p);
}
//Write Count
Console.WriteLine("Count: {0}", dirs.Count);
Console.Read();
}
static class FileHelper
{
public static List<string> GetFilesRecursive(string b)
{
// 1.
// Store results in the file results list.
List<string> result = new List<string>();
// 2.
// Store a stack of our directories.
Stack<string> stack = new Stack<string>();
// 3.
// Add initial directory.
stack.Push(b);
// 4.
// Continue while there are directories to process
while (stack.Count > 0)
{
// A.
// Get top directory
string dir = stack.Pop();
try
{
// B
// Add all files at this directory to the result List.
result.AddRange(Directory.GetFiles(dir, "*.*"));
// C
// Add all directories at this directory.
foreach (string dn in Directory.GetDirectories(dir))
{
stack.Push(dn);
}
}
catch
{
// D
// Could not open the directory
}
}
return result;
}
}
}
}
Приведенный выше код хорошо работает для рекурсивного поиска файлов / каталогов, находящихся в папке на моем c:.
Я пытаюсь сериализовать результаты того, что этот код делает с файлом XML, но я не уверен, как это сделать.
Мой проект такой: найти все файлы / каталоги на диске, сериализовать в файл XML. Затем, во второй раз, когда я запускаю это приложение, у меня будет два XML-файла для сравнения. Затем я хочу десериализовать файл XML с первого запуска этого приложения, сравнить различия с текущим файлом XML и создать отчет об изменениях (то есть, файлы, которые были добавлены, удалены, обновлены).
Я надеялся получить некоторую помощь, так как я новичок в C #, и я очень и очень шокирован сериализацией и десериализацией. У меня много проблем с кодированием. Кто-нибудь может мне помочь?
Спасибо