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"); } } } } |
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 :