Pregunta

¿Cómo leo una matriz de bytes primaria de cualquier tipo de archivo, y escribe que la matriz de bytes de nuevo en un nuevo archivo?

¿Fue útil?

Solución

(edit: tenga en cuenta que la cuestión ha cambiado, sino que no mencionó inicialmente byte[]; ver revisión 1 )

Bueno, File.Copy salta a la mente; pero por lo demás esto suena como un escenario Stream:

    using (Stream source = File.OpenRead(inPath))
    using (Stream dest = File.Create(outPath)) {
        byte[] buffer = new byte[2048]; // pick size
        int bytesRead;
        while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
            dest.Write(buffer, 0, bytesRead);
        }
    }

Otros consejos

byte[] data = File.ReadAllBytes(path1);
File.WriteAllBytes(path2, data);

¿Sabe usted acerca de TextReader y < a href = "http://msdn.microsoft.com/en-us/library/system.io.textwriter.aspx" rel = "nofollow noreferrer"> TextWriter , y sus descendientes StreamReader y StreamWriter ? Creo que estos van a resolver su problema porque manejan codificaciones, BinaryReader no sabe nada de codificaciones o incluso el texto, que sólo se ocupa de bytes.

Cómo leer el texto de un archivo

saber cómo escribir texto en un archivo

Esta es una excelente introducción a presentar IO y codificaciones.

Adición de una respuesta hasta la fecha,

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        source.CopyTo(dest);
    }
}

Opcionalmente, puede especificar el tamaño del búfer

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        source.CopyTo(dest, 2048); // or something bigger.
    }
}

o se puede realizar la operación en otro hilo,

using (var source = File.OpenRead(inPath))
{
    using (var dest = File.Create(outPath))
    {
        await source.CopyToAsync(dest);
    }
}

que sería útil cuando el hilo principal tiene que hacer otro trabajo, al igual que con WPF y Windows para almacenar aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top