| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- using System;
 
- using System.IO;
 
- using System.Text;
 
- namespace Core.Util.Extension
 
- {
 
-     public static class StreamExtension
 
-     {
 
-         /// <summary>
 
-         /// 压入一个布尔量,当前位置提升1
 
-         /// </summary>
 
-         /// <param name="stream"></param>
 
-         /// <param name="value"></param>
 
-         /// <returns></returns>
 
-         public static Stream Push(this Stream stream, bool value)
 
-         {
 
-             //stream.WriteArray()
 
-             return stream;
 
-         }
 
-     }
 
-     /// <summary>编码助手</summary>
 
-     public static class EncodingHelper
 
-     {
 
-         #region 编码检测
 
-         /// <summary>检测文件编码</summary>
 
-         public static Encoding Detect(this string filename)
 
-         {
 
-             using (var fs = File.OpenRead(filename))
 
-             {
 
-                 return Detect(fs);
 
-             }
 
-         }
 
-         /// <summary>检测文件编码</summary>
 
-         public static Encoding DetectEncoding(this FileInfo file)
 
-         {
 
-             using (var fs = file.OpenRead())
 
-             {
 
-                 return fs.Detect();
 
-             }
 
-         }
 
-         /// <summary>检测数据流编码</summary>
 
-         /// <param name="stream">数据流</param>
 
-         /// <param name="sampleSize">BOM检测失败时用于启发式探索的数据大小</param>
 
-         /// <returns></returns>
 
-         public static Encoding Detect(this Stream stream, long sampleSize = 0x400)
 
-         {
 
-             // 记录数据流原始位置,后面需要复原
 
-             var pos = stream.Position;
 
-             stream.Position = 0;
 
-             // 首先检查BOM
 
-             var boms = new byte[stream.Length > 4 ? 4 : stream.Length];
 
-             stream.Read(boms, 0, boms.Length);
 
-             var encoding = boms.Detect();
 
-             if (encoding != null)
 
-             {
 
-                 stream.Position = pos;
 
-                 return encoding;
 
-             }
 
-             // BOM检测失败,开始启发式探测
 
-             // 抽查一段字节数组
 
-             var data = new byte[sampleSize > stream.Length ? stream.Length : sampleSize];
 
-             Array.Copy(boms, data, boms.Length);
 
-             if (stream.Length > boms.Length) stream.Read(data, boms.Length, data.Length - boms.Length);
 
-             stream.Position = pos;
 
-             return data.DetectInternal();
 
-         }
 
-         
 
-         #endregion
 
-     }
 
- }
 
 
  |