我正在构建一个压缩程序。我想将LWZ用于utf-8文件(任何urf-8文件),并将BZip用于其他文件(通常是随机二进制文件)。我找不到方法来定义文件utf8。
我在整个堆栈溢出中尝试了this和许多其他方法,但是他们不能为我做这件事。 我可以分享应被视为utf 8的文件和应被视为“其他”的文件的示例
else if (args[0] != null && args[1] != null)
{
if (random binary detected)
{
Console.WriteLine("Started Bzip");
byte[] res = new Bzip2Compressor(65).Compress(File.ReadAllBytes(args[0]));
File.WriteAllBytes(args[1], res);
Console.WriteLine("Done!");
return;
}
else //for utf 8 cases (both with bom and without)
{
Console.WriteLine("Started LZW");
byte[] res = LZWCompressor.Compress(File.ReadAllBytes(args[0]));
File.WriteAllBytes(args[1], res);
Console.WriteLine("Done");
return;
}
}
注意:我只需要将utf-8和所有其他内容分开
编辑:所以我想检查前n个符号是无效的utf 8;
var bytes = new byte[1024 * 1024];
new Random().NextBytes(bytes);
File.WriteAllBytes(@"PATH", bytes);
总体目标是将检测到的文件像上面的代码中那样作为utf-8文件作为子文件