public static void Main(string[] args)
        {
            string path = args[1]; // source file;

            if (!File.Exists(path))
            {
                WriteMessageToUser("Can't find source file [{0}]", path);
            }

            Win32.SystemInfo info;
            Win32.GetSystemInfo(out info);

            WriteMessageToUser("NumberOfProcessors: {0}", info.NumberOfProcessors);
            WriteMessageToUser("AllocationGranularity: {0}", info.AllocationGranularity);
            WriteMessageToUser("PageSize: {0}", info.PageSize);
            WriteMessageToUser("ProcessorArchitecture: {0}", info.ProcessorArchitecture);

            SourceReader      reader      = new SourceReader(path, (int)info.AllocationGranularity * 2);
            DestinationWriter writer      = new DestinationWriter(path);
            Archivarius       archivarius = new Archivarius(reader, writer);

            archivarius.Run();
        }
 public Archivarius(SourceReader reader, DestinationWriter writer)
 {
     this.reader = reader;
     this.writer = writer;
 }