using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
namespace FileEncode
{
class Program
{
static void Main(string[] args)
{
if (File.Exists(args[0]))
{
ProcessFile(args[0]);
}
if (Directory.Exists(args[0]))
{
var dir = args[0];
ProcessDir(dir);
}
}
private static void ProcessFile(string fileName)
{
var fi = new FileInfo(fileName);
var sb = new StringBuilder();
using (var fs = fi.OpenRead())
{
using (var br = new BinaryReader(fs))
{
var firstTwobytes = br.ReadBytes(2);
foreach (var firstTwobyte in firstTwobytes)
{
sb.Append(firstTwobyte.ToString("X"));
}
}
}
var encoding = sb.ToString();
if (encoding != "EFBB")
{
Console.WriteLine($"{fileName} {encoding}");
File.WriteAllText(fileName,File.ReadAllText(fileName,Encoding.Default),Encoding.UTF8);
}
}
private static void ProcessDir(string dir)
{
var files = Directory.GetFiles(dir);
var fileInfos = (from file in files let fi = new FileInfo(file) where fi.Extension == ".js" select file).ToList();
foreach (var fileInfo in fileInfos)
{
ProcessFile(fileInfo);
}
var dirs = Directory.GetDirectories(dir);
foreach (var s in dirs)
{
ProcessDir(s);
}
}
}
}