Exemple #1
0
 public FormCortando(Stream archivoOriginal, FileInfo infoOriginal, long cutterSize)
 {
     InitializeComponent();
     bytesAnteriores         = 0;
     archivoXCI              = new XCIFile(archivoOriginal, infoOriginal, cutterSize);
     this.Text               = "Cortando " + archivoXCI.soloNombre;
     pbArchivos.Maximum      = archivoXCI.partesACortar;
     lblArchivos.Text        = string.Format("{0} partes de {1}", pbArchivos.Value, archivoXCI.partesACortar);
     lblArchivos.Location    = new System.Drawing.Point(this.Width - 20 - lblArchivos.Width, lblArchivos.Location.Y);
     lblBytesLeidos.Text     = string.Format("{0}/{1} GB", 0, (Convert.ToDecimal(cutterSize) / 1024 / 1024 / 1024).ToString("0.00"));
     lblBytesLeidos.Location = new System.Drawing.Point(this.Width - 20 - lblBytesLeidos.Width, lblBytesLeidos.Location.Y);
 }
Exemple #2
0
        private static void writePartCutter(XCIFile archivoXCI, Stream srDestino)
        {
            byte[] buffer = new byte[128];
            int    leidos = 0;

            for (archivoXCI.bytesLeidos = 0; archivoXCI.bytesLeidos < archivoXCI.cutterActual && !archivoXCI.cancelar; archivoXCI.bytesLeidos += leidos)
            {
                leidos = archivoXCI.LeerBytes(ref buffer);
                if (leidos < 128)
                {
                    Array.Resize <byte>(ref buffer, leidos);
                }
                srDestino.Write(buffer, 0, buffer.Length);
                archivoXCI.totalBytes += leidos;
            }
            srDestino.Close();
        }
Exemple #3
0
        public static void cutterParts(XCIFile archivoXCI, BackgroundWorker bwCutter)
        {
            Stream srDestino;

            for (int indice = 0; indice < archivoXCI.partesACortar && !archivoXCI.cancelar; indice++)
            {
                if (archivoXCI.cutterActual > 0)
                {
                    srDestino = new FileStream(archivoXCI.nombreConRuta.Replace(".xci", "-cut.xc") + indice, FileMode.CreateNew, FileAccess.Write, FileShare.Write);
                    writePartCutter(archivoXCI, srDestino);
                    if (archivoXCI.tamanioArchivo - archivoXCI.totalBytes < archivoXCI.cutterActual)
                    {
                        archivoXCI.cutterActual = archivoXCI.tamanioArchivo - archivoXCI.totalBytes;
                    }
                }
                bwCutter.ReportProgress(indice + 1);
            }
            archivoXCI.Close();
        }