C#文件分割的方法
本文实例讲述了C#文件分割的方法。分享给大家供大家参考。具体如下:
1.小文件分割(适用于小于等于64M的文件):
usingSystem; usingSystem.IO; stringfiletosplit=@"C:\temp\data.bin"; stringtargetpath=@"D:\store"; FileStreamfsr=newFileStream(filetosplit,FileMode.Open,FileAccess.Read); longFileLength=fsr.Length; byte[]btArr=newbyte[FileLength]; fsr.Read(btArr,0,(int)FileLength); fsr.Close(); intsplitcount=3; longPartLength=FileLength/splitcount+FileLength%splitcount; intnCount=(int)Math.Ceiling((double)FileLength/PartLength); stringstrFileName=Path.GetFileName(filetosplit); longbyteCount=0; for(inti=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength)) { FileStreamfsw=newFileStream(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的文件)
usingSystem; usingSystem.IO stringfiletosplit=@"C:\temp\data.bin"; stringtargetpath=@"D:\store"; FileStreamfsr=newFileStream(filetosplit,FileMode.Open,FileAccess.Read); longFileLength=fsr.Length; byte[]btArr=newbyte[FileLength]; fsr.Read(btArr,0,(int)FileLength); fsr.Close(); intsplitcount=3; longPartLength=FileLength/splitcount+FileLength%splitcount; intnCount=(int)Math.Ceiling((double)FileLength/PartLength); stringstrFileName=Path.GetFileName(filetosplit); longbyteCount=0; for(inti=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength)) { FileStreamfsw=newFileStream(targetpath+Path.DirectorySeparatorChar+strFileName+i,FileMode.Create,FileAccess.Write); longbc=byteCount; longPartCount=i<nCount?PartLength:FileLength-bc; intPartBufferCount=(int)(PartCount<int.MaxValue/32?PartCount:int.MaxValue/32); intnc=(int)Math.Ceiling((double)PartCount/PartBufferCount); for(intj=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#程序设计有所帮助。