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#程序设计有所帮助。
