亲宝软件园·资讯

展开

C#文件分割 C#文件分割的方法

DTC2 人气:3
想了解C#文件分割的方法的相关内容吗,DTC2在本文为您仔细讲解C#文件分割的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点: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#程序设计有所帮助。

加载全部内容

相关教程
猜你喜欢
用户评论