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.