mirror of
https://github.com/therealKyp/Earth-and-Beyond-server
synced 2026-08-13 22:23:03 -04:00
58 lines
2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|