这篇文章主要介绍了C#文件分割的方法,针对小于等于64M文件和大于64M文件两种情况分析了C#文件分割的实现技巧,需要的朋友可以参考下
本文实例讲述了C#文件分割的方法。分享给大家供大家参考。具体如下:
1. 小文件分割(适用于小于等于64M的文件):
- using System;
- using System.IO;
- string filetosplit=@"C:/temp/data.bin";
- string targetpath=@"D:/store";
- FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
- long FileLength=fsr.Length;
- byte[] btArr = new byte[FileLength];
- fsr.Read(btArr, 0, (int)FileLength);
- fsr.Close();
- int splitcount=3;
- long PartLength=FileLength/splitcount+FileLength%splitcount;
- int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
- string strFileName=Path.GetFileName(filetosplit);
- long byteCount=0;
- for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
- {
- FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
- fsw.Write(btArr, (int)byteCount, (int)(i<nCount?PartLength:FileLength-byteCount));
- fsw.Flush();
- fsw.Close();
- }
2. 大文件分割(适用于大于64M的文件)
- using System;
- using System.IO
- string filetosplit=@"C:/temp/data.bin";
- string targetpath=@"D:/store";
- FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
- long FileLength=fsr.Length;
- byte[] btArr = new byte[FileLength];
- fsr.Read(btArr, 0, (int)FileLength);
- fsr.Close();
- int splitcount=3;
- long PartLength=FileLength/splitcount+FileLength%splitcount;
- int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
- string strFileName=Path.GetFileName(filetosplit);
- long byteCount=0;
- for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
- {
- FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
- long bc=byteCount;
- long PartCount=i<nCount?PartLength:FileLength-bc;
- int PartBufferCount=(int)(PartCount<int.MaxValue/32?PartCount:int.MaxValue/32);
- int nc=(int)Math.Ceiling((double)PartCount/PartBufferCount);
- for(int j=1;j<=nc;j++,bc=(j<nCount?bc+PartBufferCount:PartCount-PartBufferCount))
- fsw.Write(btArr, (int)bc, (int)(j<nc?PartBufferCount:PartCount-bc));
- fsw.Flush();
- fsw.Close();
- }
- fsr.Close();
希望本文所述对大家的C#程序设计有所帮助。
新闻热点
疑难解答