Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Manipulation de fichiers binaires en C#

Je vous propose un exemple très simple qui copie le contenu d'un fichier quelconque dans un autre fichier. Le fichier source étant de nature quelconque, il est nécessaire de gérer la copie via des flux binaires. Enfin, dans le but d'optimiser le temps nécessaire à la copie, on travaille via des buffers (des blocs d'octets) plutôt que de procéder octet par octet.

 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 
using System;
using System.IO;

namespace _10_CopyFile
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: Copy srcFile destFile");
                return;
            }

            try
            {
                using (FileStream inputStream = new FileStream(args[0], FileMode.Open))
                using (FileStream outputStream = new FileStream(args[1], FileMode.Create))
                using (BinaryReader reader = new BinaryReader(inputStream))
                using (BinaryWriter writer = new BinaryWriter(outputStream))
                {
                    long length = inputStream.Length;

                    const int bufferSize = 1000000;
                    while (length > 0)
                    {
                        byte[] buffer = reader.ReadBytes(bufferSize);
                        writer.Write(buffer);
                        length -= buffer.Length;
                    }
                }
            }
            catch (IOException)
            {
                Console.Error.WriteLine("Usage: Copy srcFile destFile");
            }

        }
    }
}
Exemple d'une copie de fichier en utilisant des flux binaires