Foros del Web » Programación para mayores de 30 ;) » .NET »

Escribir Binarios Demasiado Grandes.

Estas en el tema de Escribir Binarios Demasiado Grandes. en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/07/2008, 05:50
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
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.
__________________
Charlie.
  #2 (permalink)  
Antiguo 30/07/2008, 08:57
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
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.
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:39.