Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 30-jul-2008, 05:50   #1 (permalink)
chcma está en el buen camino
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 1.874
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.
chcma está desconectado   Responder Citando
Antiguo 30-jul-2008, 08:57   #2 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
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
xknown está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 00:47.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93