文件分割合并功能

原创 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, "提示");
            }
        }

        
    }

Android(java方法)上实现mp4的分割和拼接 (一)

最近正在处理android上的mp4切割问题。学习了很多mp4的知识,mp4文件按照编码类型,分为mpeg-4,avc这两种;这两种类型的mp4在后面的处理中会有不同的地方。            ...
  • sdvch
  • sdvch
  • 2014年08月02日 15:09
  • 11753

java流操作对文件的分割和合并

学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并。
  • u010648555
  • u010648555
  • 2015年11月28日 17:58
  • 4084

Wireshark切割PCAP以及合并PCAP

Wireshark对PCAP文件进行切割和合并操作。
  • Joseph_ChiRunningAnt
  • Joseph_ChiRunningAnt
  • 2017年04月25日 17:32
  • 1850

文件分割合并功能源代码

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

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

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

Excel文件操作工具类,包括读、写、合并等功能

  • 2015年04月26日 00:30
  • 7KB
  • 下载

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

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

C#实现合并文件功能

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

WinRAR的文件分割功能

很晕菜的一件事,一直以为winrar的文件分割功能,只能分割为FLOPPY 1.44M,CDROM 650M等基本上算是标准的大小,不可以自己定义压缩卷的大小!!!还一直质疑这些压缩软件的功能!看到别...
  • u014461454
  • u014461454
  • 2014年03月31日 17:36
  • 387

【MS SQL Server】使用【数据库收缩功能】实现多个数据文件的合并

收缩用户数据库   1 为什么要收缩数据库 SQL Server 2000采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了100MB,而实际上只占用了50MB空...
  • WolfOfSiberian
  • WolfOfSiberian
  • 2014年10月12日 11:26
  • 833
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件分割合并功能
举报原因:
原因补充:

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