這篇文章主要介紹了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#程序設計有所幫助。
新聞熱點
疑難解答