浏览代码

ShuffleCode

懒得勤快 3 年之前
父节点
当前提交
f6cff807a6
共有 1 个文件被更改,包括 30 次插入7 次删除
  1. 30 7
      Masuit.Tools.Abstractions/Extensions/BaseType/StreamExtensions.cs

+ 30 - 7
Masuit.Tools.Abstractions/Extensions/BaseType/StreamExtensions.cs

@@ -1,8 +1,11 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.IO;
 using System.IO;
+using System.Linq;
 using System.Text;
 using System.Text;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
+
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
 using System;
 using System;
 using System.Buffers;
 using System.Buffers;
@@ -40,6 +43,25 @@ namespace Masuit.Tools
             return bytes;
             return bytes;
         }
         }
 
 
+        /// <summary>
+        /// 流洗码,在流的末端随即增加几个空字节,重要数据请谨慎使用,可能造成流损坏
+        /// </summary>
+        /// <param name="stream"></param>
+        public static void ShuffleCode(this Stream stream)
+        {
+            if (stream.CanWrite && stream.CanSeek)
+            {
+                var position = stream.Position;
+                stream.Position = stream.Length;
+                for (int i = 0; i < new Random().Next(1, 20); i++)
+                {
+                    stream.WriteByte(0);
+                }
+                stream.Flush();
+                stream.Position = position;
+            }
+        }
+
         /// <summary>
         /// <summary>
         /// 读取所有行
         /// 读取所有行
         /// </summary>
         /// </summary>
@@ -218,7 +240,7 @@ namespace Masuit.Tools
                 sr.Dispose();
                 sr.Dispose();
                 stream.Close();
                 stream.Close();
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
-                await stream.DisposeAsync().ConfigureAwait(false); 
+                await stream.DisposeAsync().ConfigureAwait(false);
 #else
 #else
                 stream.Dispose();
                 stream.Dispose();
 #endif
 #endif
@@ -244,7 +266,7 @@ namespace Masuit.Tools
                 sr.Dispose();
                 sr.Dispose();
                 stream.Close();
                 stream.Close();
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
-                await stream.DisposeAsync().ConfigureAwait(false); 
+                await stream.DisposeAsync().ConfigureAwait(false);
 #else
 #else
                 stream.Dispose();
                 stream.Dispose();
 #endif
 #endif
@@ -273,7 +295,7 @@ namespace Masuit.Tools
                 stream.Close();
                 stream.Close();
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
                 await sw.DisposeAsync().ConfigureAwait(false);
                 await sw.DisposeAsync().ConfigureAwait(false);
-                await stream.DisposeAsync().ConfigureAwait(false); 
+                await stream.DisposeAsync().ConfigureAwait(false);
 #else
 #else
                 sw.Dispose();
                 sw.Dispose();
                 stream.Dispose();
                 stream.Dispose();
@@ -305,7 +327,7 @@ namespace Masuit.Tools
                 stream.Close();
                 stream.Close();
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
                 await sw.DisposeAsync().ConfigureAwait(false);
                 await sw.DisposeAsync().ConfigureAwait(false);
-                await stream.DisposeAsync().ConfigureAwait(false); 
+                await stream.DisposeAsync().ConfigureAwait(false);
 #else
 #else
                 sw.Dispose();
                 sw.Dispose();
                 stream.Dispose();
                 stream.Dispose();
@@ -314,8 +336,9 @@ namespace Masuit.Tools
         }
         }
 
 
 #if NET5_0_OR_GREATER
 #if NET5_0_OR_GREATER
+
         /// <summary>
         /// <summary>
-        /// 
+        ///
         /// </summary>
         /// </summary>
         /// <param name="stream"></param>
         /// <param name="stream"></param>
         /// <param name="cancellationToken"></param>
         /// <param name="cancellationToken"></param>
@@ -330,4 +353,4 @@ namespace Masuit.Tools
         }
         }
 #endif
 #endif
     }
     }
-}
+}