C#如何实现文件分割? 只要能分割就好~~~~谁给贴个示例 谢谢了…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也正有个问题需要将文件分割后刻在700mb的光盘上呢,但是没想到去自己动手做,我的文件是780mb的bin文件不知道能不能把它放入byte[]类型然后从中间给切两半 C# 文件切分和组合源码http://download.csdn.net/source/2838253可以对任意类型的文件进行分割合并,用的多线程,进度条显示分割进度,速度快,优化处理过 public class FilePartition { //字节长度 private static int bufflength = GetNetMappingAppConfig.VideoFileLength * 1048576; //字节数组 private byte[] buff = new byte[bufflength]; private VideoFileInfo entity; //构造函数初始化 public FilePartition(VideoFileInfo entity) { this.entity = entity; } //文件分割方法 public void Partition() { try { //获取文件信息 FileInfo fi = new FileInfo(entity.FilePath + entity.FileName); //打开文件流 FileStream fs = new FileStream(entity.FilePath + entity.FileName, FileMode.Open); //设置文件流起始位置为0字节 fs.Position = 0; //取要分割的文件整数 int FileNum = Convert.ToInt32(fi.Length) / bufflength; //取药分割的文件余数 int FileResidue = Convert.ToInt32(fi.Length) % bufflength; if (FileResidue != 0) { FileNum++; } // //读取文件流分割 // if (FileNum > 1) { for (int i = 0; i < FileNum; i++) { //获取读取流当前位置 fs.Position = i * bufflength; //读取 fs.Read(buff, 0, buff.Length); //写入文件头 VideoFunction.Instance.createFile(entity.FilePath, i + ".264", VideoFunction.FileHeader); //追加文件流 FileStream Wfs = new FileStream(entity.FilePath + i + ".264", FileMode.Append); if (fs.Length >= (i + 1) * bufflength) { Wfs.Write(buff, 0, buff.Length); } else { long lastlength = fs.Length - i * bufflength; Wfs.Write(buff, 0, Convert.ToInt32(lastlength)); } Wfs.Close();//关闭写入流 VideoFunction.Instance.endFile(entity.FilePath, i + ".264");//写入文件尾 } fs.Close();//关闭源文件读取 } else { File.Move(entity.FilePath+entity.FileName,"0.264");//重命名 } //删除源文件 File.Delete(entity.FilePath + entity.FileName); } catch (Exception e) { string Error= e.Message.ToString(); } } }发个自己的吧= =…… 我构造函数里德形参不用管它 是我的程序用到的……谢谢5楼了 组织机构图控件 Web Control for asp.net怎么用 怎样获取网站服务器时间? 使用RemotingConfiguration 注册TCP信道 CPU占用好高 存储AutoCAD(.dwg)文件到sql server? 在ASP.NET里面,怎么讀取XML文件? 如何实现主从显示时得数值传递? DataGrid 竖放问题 请高手救命!!!!!!!!!! 文件流问题 C#钩子如何获取监控的进程 如何用C#编个应用程式能够象IE一样浏览指定的网址 gridview导出 excel bt事件没反应!求解! 请高手分析httpwatch抓取的post数据
但是没想到去自己动手做,我的文件是780mb的bin文件
不知道能不能把它放入byte[]类型然后从中间给切两半
http://download.csdn.net/source/2838253
可以对任意类型的文件进行分割合并,用的多线程,进度条显示分割进度,速度快,优化处理过
{
//字节长度
private static int bufflength = GetNetMappingAppConfig.VideoFileLength * 1048576;
//字节数组
private byte[] buff = new byte[bufflength];
private VideoFileInfo entity; //构造函数初始化
public FilePartition(VideoFileInfo entity)
{
this.entity = entity;
}
//文件分割方法
public void Partition()
{
try
{
//获取文件信息
FileInfo fi = new FileInfo(entity.FilePath + entity.FileName);
//打开文件流
FileStream fs = new FileStream(entity.FilePath + entity.FileName, FileMode.Open);
//设置文件流起始位置为0字节
fs.Position = 0;
//取要分割的文件整数
int FileNum = Convert.ToInt32(fi.Length) / bufflength;
//取药分割的文件余数
int FileResidue = Convert.ToInt32(fi.Length) % bufflength;
if (FileResidue != 0)
{
FileNum++;
}
//
//读取文件流分割
//
if (FileNum > 1)
{
for (int i = 0; i < FileNum; i++)
{
//获取读取流当前位置
fs.Position = i * bufflength;
//读取
fs.Read(buff, 0, buff.Length);
//写入文件头
VideoFunction.Instance.createFile(entity.FilePath, i + ".264", VideoFunction.FileHeader);
//追加文件流
FileStream Wfs = new FileStream(entity.FilePath + i + ".264", FileMode.Append);
if (fs.Length >= (i + 1) * bufflength)
{
Wfs.Write(buff, 0, buff.Length);
}
else
{
long lastlength = fs.Length - i * bufflength;
Wfs.Write(buff, 0, Convert.ToInt32(lastlength));
}
Wfs.Close();//关闭写入流
VideoFunction.Instance.endFile(entity.FilePath, i + ".264");//写入文件尾
}
fs.Close();//关闭源文件读取
}
else
{
File.Move(entity.FilePath+entity.FileName,"0.264");//重命名
}
//删除源文件
File.Delete(entity.FilePath + entity.FileName);
}
catch (Exception e)
{
string Error= e.Message.ToString();
}
}
}发个自己的吧= =…… 我构造函数里德形参不用管它 是我的程序用到的……谢谢5楼了