63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
| using System.IO;
 | ||
| using System.Threading.Tasks;
 | ||
| 
 | ||
| namespace IRaCIS.Core.Infrastructure.Extention
 | ||
| {
 | ||
|     /// <summary>
 | ||
|     /// 大文件操作扩展类
 | ||
|     /// </summary>
 | ||
|     public static class FileExt
 | ||
|     {
 | ||
|         /// <summary>
 | ||
|         /// 以文件流的形式复制大文件
 | ||
|         /// </summary>
 | ||
|         /// <param name="fs">源</param>
 | ||
|         /// <param name="dest">目标地址</param>
 | ||
|         /// <param name="bufferSize">缓冲区大小,默认8MB</param>
 | ||
|         public static void CopyToFile(this Stream fs, string dest, int bufferSize = 1024 * 8 * 1024)
 | ||
|         {
 | ||
|             using var fsWrite = new FileStream(dest, FileMode.OpenOrCreate, FileAccess.ReadWrite);
 | ||
|             byte[] buf = new byte[bufferSize];
 | ||
|             int len;
 | ||
|             while ((len = fs.Read(buf, 0, buf.Length)) != 0)
 | ||
|             {
 | ||
|                 fsWrite.Write(buf, 0, len);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 以文件流的形式复制大文件(异步方式)
 | ||
|         /// </summary>
 | ||
|         /// <param name="fs">源</param>
 | ||
|         /// <param name="dest">目标地址</param>
 | ||
|         /// <param name="bufferSize">缓冲区大小,默认8MB</param>
 | ||
|         public static async void CopyToFileAsync(this Stream fs, string dest, int bufferSize = 1024 * 1024 * 8)
 | ||
|         {
 | ||
|             using var fsWrite = new FileStream(dest, FileMode.OpenOrCreate, FileAccess.ReadWrite);
 | ||
|             byte[] buf = new byte[bufferSize];
 | ||
|             int len;
 | ||
|             await Task.Run(() =>
 | ||
|             {
 | ||
|                 while ((len = fs.Read(buf, 0, buf.Length)) != 0)
 | ||
|                 {
 | ||
|                     fsWrite.Write(buf, 0, len);
 | ||
|                 }
 | ||
|             }).ConfigureAwait(true);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 将内存流转储成文件
 | ||
|         /// </summary>
 | ||
|         /// <param name="ms"></param>
 | ||
|         /// <param name="filename"></param>
 | ||
|         public static void SaveFile(this MemoryStream ms, string filename)
 | ||
|         {
 | ||
|             using var fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
 | ||
|             byte[] buffer = ms.ToArray(); // 转化为byte格式存储
 | ||
|             fs.Write(buffer, 0, buffer.Length);
 | ||
|             fs.Flush();
 | ||
|         }
 | ||
|     
 | ||
|        
 | ||
|     }
 | ||
| } |