Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Escribir Binarios Demasiado Grandes. (http://www.forosdelweb.com/f29/escribir-binarios-demasiado-grandes-610570/)

chcma 30/07/2008 05:50

Escribir Binarios Demasiado Grandes.
 
Hola buenas señores !!!

Verán, me estoy peleando ahora mismo con el BinaryWriter y el BinaryRead para realizar una copia de un fichero.

Sé que se puede hacer con el File.Copy(), pero lo que quiero hacer es aprender a escribir Binarios de Tamaño considerable.

Vamos, ya he usado varias veces el StreamWriter y demás para escribir ficheros de texto e imágenes pequeñas. Pero ahora lo que quiero es leer un fichero de vídeo y guardarlo en otra carpeta.

Me imagino que los métodos de Read() se me quedarán pequeños, ya que trabajan con array de Bytes con parámetros de tipo INT y claro... me imagino que el tamaño de este fichero será de tipo LONG.

Actualmente tengo el siugiente código, el cual pensaba que valdría pero me está fallando:
Código:

            FileStream objStreamFile = File.Open(txtPathFichero, FileMode.Open, FileAccess.Read);
            BinaryReader objBinLectura = new BinaryReader(objStreamFile);

            objBinLectura.BaseStream.Seek(0, SeekOrigin.Begin);           

           
            FileStream objStreamDestino = File.Open(@"C:\nusk.wmv", FileMode.OpenOrCreate);
            BinaryWriter objEscritura = new BinaryWriter(objStreamDestino);

            long tamanioFichero = 0;
            for (tamanioFichero = 0; tamanioFichero < objStreamFile.Length; tamanioFichero++)
            {
                objEscritura.Write(objBinLectura.Read());
            }

            objEscritura.Close();
            objBinLectura.Close();
            objStreamDestino.Close();
            objStreamFile.Close();

Pensaba que leyendo Byte a Byte no me cascaría el programa y que me escribiría bien los datos, pero me equivoqué... el error/excepcion que me da es el siguiente:
Código:

El búfer de caracteres de salida es demasiado pequeño para almacenar caracteres descodificados. Codificación de 'Unicode (UTF-8)' con recursos de reserva 'System.Text.DecoderReplacementFallback'.
Nombre del parámetro: chars


En fin, espero haber explicado correctamente lo que pretendo hacer y el porqué. Y bueno, haber si alguien me puede hechar un cable, jejeje.

Saludos.

xknown 30/07/2008 08:57

Respuesta: Escribir Binarios Demasiado Grandes.
 
El problema, por lo que he podido averiguar, tiene que ver con el encoding al momento de leer el archivo. Recomiendan leer usando ReadByte en lugar de Read.

Más información en DecoderReplacementFallback BinaryReader

Saludos
PS. Siempre es bueno buscar en base a la descripción del error que se produce.


La zona horaria es GMT -6. Ahora son las 10:56.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.