예제 #1
0
        protected override void _Partir(string fichero, string sal1, string dir, long kb)
        {
            JoinInfo info = new JoinInfo ();

            info.InitialFragment = 1;
            info.Digits = 3;
            info.OriginalFile = new FileInfo (fichero).Name;
            info.BaseName = info.OriginalFile;
            info.Directory = new DirectoryInfo (dir);
            // TODO Rewrite to use new generic
            int fragmentos = new ParteGenerico().Partir (fichero, sal1, dir, kb, info);

            MXSInfo mxsinfo = new MXSInfo ();
            mxsinfo.NombreOriginal = info.OriginalFile;
            mxsinfo.TamanoOriginal = new FileInfo (fichero).Length;
            mxsinfo.Fragmentos = fragmentos;

            Stream fos = UtilidadesFicheros.CreateWriter(dir+Path.DirectorySeparatorChar+fichero+".mxs");
            byte[] mxs = mxsinfo.ToByteArray();
            fos.Write(mxs, 0, mxs.Length);
            fos.Close();
        }
예제 #2
0
        protected override void _Unir(string fichero, string dirDest)
        {
            string bas = fichero.Substring (0, fichero.LastIndexOf("."));

            MXSInfo info = new MXSInfo (fichero);
            string destino = dirDest + Path.DirectorySeparatorChar + info.NombreOriginal;
            UtilidadesFicheros.ComprobarSobreescribir (destino);

            for (int i=1; i<= info.Fragmentos; i++){
                string f = String.Format (bas + ".{0:000}" , i);
                if (!File.Exists(f)){
                    throw new System.IO.FileNotFoundException("", f);
                }
            }
            OnProgress (0,1);
            for (int i=1; i<= info.Fragmentos; i++){
                string f = String.Format (bas + ".{0:000}", i);
                UtilidadesFicheros.CopiarTodo (f, destino);
                OnProgress (i, info.Fragmentos);
            }
            if ( (new FileInfo (destino).Length) != info.TamanoOriginal){
                throw new Dalle.Formatos.FileFormatException();
            }
            if (info.Zipped){
                Dalle.Formatos.Zip.Zip zip = new Dalle.Formatos.Zip.Zip ();
                zip.Progress += new ProgressEventHandler (this.OnProgress);
                zip.Unir (destino);
            }
        }