コード例 #1
0
ファイル: ParteSF.cs プロジェクト: albfernandez/dalle
 // TODO: Comprobar que no se excederá el limite de ficheros..
 protected override void _Partir(string fichero,string sal1, string dir, long kb)
 {
     string bas = dir + Path.DirectorySeparatorChar + "SF{0:0000}.SF";
     long tamano = kb*1024;
     CabeceraSF cab = new CabeceraSF();
     cab.Nombre = fichero;
     tamano -= cab.Tamano;
     int contador = 1;
     long total_a_leer = new FileInfo(fichero).Length;
     if ((total_a_leer / tamano) > 255){
         throw new Dalle.Formatos.FileFormatException();
     }
     long transferidos  = 0;
     OnProgress (0, 1);
     do{
         byte[] b = UtilidadesFicheros.LeerSeek(fichero, transferidos, tamano);
         cab.Numero = contador;
         string nombreFichero = string.Format (bas, contador);
         transferidos += b.Length;
         UtilidadesFicheros.Append (nombreFichero, cab.ToByteArray());
         UtilidadesFicheros.Append (nombreFichero, b);
         contador++;
         OnProgress (transferidos, total_a_leer);
     }while (transferidos < total_a_leer);
 }
コード例 #2
0
ファイル: ParteSF.cs プロジェクト: albfernandez/dalle
        protected override void _Unir(string fichero, string dirDest)
        {
            ArrayList lista = new ArrayList();
            string destino = "";
            string f = new FileInfo(fichero).DirectoryName;
            f += Path.DirectorySeparatorChar + "SF{0:0000}.SF";
            for (int i = 1 ; File.Exists (string.Format (f,i)); i++)
            {
                CabeceraSF c = new CabeceraSF(string.Format (f,i));
                if (c.Numero != i){
                    //TODO: Lanzar excepcion personalizada.
                    throw new Exception ();
                }
                destino = dirDest + Path.DirectorySeparatorChar + c.Nombre;
                lista.Add (c);
            }

            UtilidadesFicheros.ComprobarSobreescribir(destino);
            int contador = 0;
            OnProgress (0, 1);
            foreach (CabeceraSF c in lista){
                String nombre = string.Format (f, c.Numero);
                UtilidadesFicheros.CopiarIntervalo(nombre, destino, c.Tamano);
                OnProgress (++contador, lista.Count);
            }
        }