net7/trunk/Net7Tools/LaunchNet7/FileListCreator/Program.cs
2014-05-11 16:54:16 -04:00

58 lines
2 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using FileListCreator.Cryptography;
namespace FileListCreator
{
class Program
{
static void Main(string[] args)
{
string fileListFileName = "Files.txt";
string baseDirectory = Environment.CurrentDirectory;
if (args.Length > 0)
{
if (Directory.Exists(args[0]))
{
baseDirectory = args[0];
}
if (args.Length >= 2)
{
fileListFileName = args[1];
}
}
using (FileStream fs = File.Open(fileListFileName, File.Exists(fileListFileName) ? FileMode.Truncate : FileMode.Create, FileAccess.Write, FileShare.None))
{
StreamWriter writer = new StreamWriter(fs, Encoding.Default);
Crc32Processor processor = new Crc32Processor();
byte[] buffer = new byte[4096];
foreach (string fileName in Directory.GetFiles(baseDirectory, "*.*", SearchOption.AllDirectories))
{
if (String.Equals(Path.GetFullPath(fileListFileName), Path.GetFullPath(fileName), StringComparison.InvariantCultureIgnoreCase)) continue;
using (FileStream inStream = File.OpenRead(fileName))
{
int bytesRead = -1;
while (bytesRead != 0)
{
bytesRead = inStream.Read(buffer, 0, buffer.Length);
processor.Process(buffer, 0, bytesRead);
}
}
writer.Write(fileName.Substring(baseDirectory.Length + 1));
writer.Write('\t');
writer.Write(processor.Current.ToString("X8"));
writer.WriteLine();
processor.Reset();
}
writer.Flush();
}
}
}
}