文件分割合并功能
2012-03-22 16:56
387 查看
文件分割合并功能
public partial class Form1 : Form { public Form1() { InitializeComponent(); } //选择文件 事件 private void Btn_SelFile_Click(object sender, EventArgs e) { string filter="选择文件(*.*)|*.*"; OpenFileSelection ofs = new OpenFileSelection(filter,false); if(ofs.IsFileSelected()==true) { this.textBox1.Text =ofs.GetFileName; } } //选择目录 事件 private void btn_seldir_Click(object sender, EventArgs e) { DirectorySelection dirsel = new DirectorySelection(Environment.SpecialFolder.Desktop, "", true); if (dirsel.IsDirectorySelected() == true) { this.textBox2.Text = dirsel.GetSelectedPath; } } //开始分割 private void Btn_Split_Click(object sender, EventArgs e) { try { string fpath = this.textBox1.Text; string splitDir = this.textBox2.Text; SplitFile(fpath, splitDir, 10); MessageBox.Show("分割完毕!", "提示"); } catch (Exception ee) { MessageBox.Show(ee.Message, "提示"); } } public bool SplitFile(string sourefilepath, string splitedStoreDir, int fileNums) { bool rbc = false; FileStream fs = new FileStream(sourefilepath, FileMode.Open); long fileLength = fs.Length; long fNum = (long)fileNums; long filesize = fileLength/fNum; for (int i = 0; i < fNum; i++) { int tmpfsize = (int)filesize; string tmpfName = (i + 1).ToString(); string tmpfpath=splitedStoreDir + "\\" + tmpfName; FileStream wfs = new FileStream(tmpfpath,FileMode.OpenOrCreate); byte[] array = null; if (i == fNum - 1) { long len_pos=fs.Length-fs.Position; array = new byte[len_pos]; fs.Read(array, 0, (int)len_pos); wfs.Write(array, 0, (int)len_pos); } else { array = new byte[tmpfsize]; fs.Read(array, 0, tmpfsize); wfs.Write(array, 0, tmpfsize); } wfs.Flush(); wfs.Close(); wfs.Dispose(); wfs = null; } fs.Close(); fs.Dispose(); fs = null; return rbc; } public bool UnionFile(string splitedStoreDir, string unionfilepath) { bool rbc = false; string[] filepathArray = CommonClass.GetFiles(splitedStoreDir, false); List<int> list = new List<int>(); foreach (string t in filepathArray) list.Add(CommonClass.TInt(t.Replace("\\",""))); list.Sort(); FileStream wfs = new FileStream(unionfilepath, FileMode.Append); for (int i = 0; i < list.Count; i++) { string fp = splitedStoreDir+"\\"+list[i].ToString(); FileStream fs = new FileStream(fp, FileMode.Open); byte[] dataArray=new byte[fs.Length]; fs.Read(dataArray,0,(int)fs.Length); wfs.Write(dataArray,0, (int)fs.Length); // fs.Close(); fs.Dispose(); fs = null; } wfs.Flush(); wfs.Close(); wfs.Dispose(); wfs = null; return rbc; } //开始合并 private void btn_union_Click(object sender, EventArgs e) { try { string splitDir = this.textBox2.Text; UnionFile(splitDir, splitDir + "\\union.iso"); MessageBox.Show("合并完毕!", "提示"); } catch (Exception ee) { MessageBox.Show(ee.Message, "提示"); } } }
相关文章推荐
- Java 实现文件分割,合并功能
- 文件分割合并功能
- Java大文件的分割和合并
- IO学习(十七)文件的分割与合并
- java中用文件流分割文件,用于将大文件分割成多个小文件,合并文件待续
- c语言之分割与合并文件
- 文件的分割与合并SequenceInputStream
- 关于 Delphi 中流的使用(9) 分割与合并文件的函数
- php断点续传之如何分割合并文件
- 用Java实现大文件的分割与合并
- java:大数据文件写入,读取,分割,排序,合并
- Vmware 虚拟硬盘 合并多个分割文件
- RMVB视频文件分割、合并软件推荐
- DD命令分割,合并文件
- “Linux文件的合并、排序和分割” 之 tr 命令
- java实现大文件分割与合并的实例代码
- 文件的分割与合并
- Linux/Centos文件分割与合并命令
- Linux下分割与合并文件的方法
- Linux - 文件 合并 分割 去重