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(); }
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); } }