文件分割合并功能

原创 2012年03月22日 16:56:13
文件分割合并功能
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, "提示");
            }
        }

        
    }

相关文章推荐

文件分割合并功能源代码

  • 2012年03月22日 17:03
  • 154KB
  • 下载

Java 实现文件分割,合并功能

在文件操作中,经常遇到很大的文件,比如有一个10G文件,那么操作系统可能不支持直接铐贝,因为文件太大;那么我们可以把文件进行分割,分割成10个 1G文件,然后铐贝过去,再合并文件;像我在CSDN上传文...

文件分割器_不占空间、功能强大

  • 2010年08月18日 09:49
  • 506KB
  • 下载

java动态生成pdf含表格table和 合并两个pdf文件功能

1.首先一样需要maven依赖包: com.itextpdf itextpdf 5.5.10    com.itextpdf ...

C#实现合并文件功能

  • 2017年02月23日 20:08
  • 55KB
  • 下载

Hadoop 1.x 实现文件上传合并功能

HDFS 实现若干小文件上传后合并功能
  • yyywyr
  • yyywyr
  • 2016年03月18日 20:57
  • 568

013_HDFS文件合并上传putmarge功能(类似于hadoop fs -getmerge)

场景 合并小文件,存放到HDFS上。例如,当需要分析来自许多服务器的Apache日志时,各个日志文件可能比较小,然而Hadoop更合适处理大文件,效率会更高,此时就需要合并分散的文件。如果先将所有...

gcc编译多个函数文件的Makefile写法(单链表的插入和合并等功能)

部分源程序参考了华清远见的《嵌入式Linux C编程入门》(第2版)P231,实现的功能是单链表的插入和合并功能,Makefile是自己编写的,以便将几个子函数一起弄过来编译链接。   Makefi...

java 文件合并功能

在项目中在一个文件目录中存放多个临时文件合并文件功能的,提供代码以供交流,如有不同意见一起商议,希望各位大牛提出更好的意见和建议.再次表示感谢. Java代码   package ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件分割合并功能
举报原因:
原因补充:

(最多只允许输入30个字)