/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /* Example15_14.cs illustrates use of BufferedStreams */ using System; using System.Windows.Forms; using System.IO; public class Example15_14 { [STAThread] public static void Main() { // use an open file dialog to get a filename OpenFileDialog dlgOpen = new OpenFileDialog(); dlgOpen.Title="Select file to back up"; if (dlgOpen.ShowDialog() == DialogResult.OK) { // create the raw streams FileStream inStream = File.OpenRead(dlgOpen.FileName); FileStream outStream = File.OpenWrite(dlgOpen.FileName + ".bak"); // add a buffering layer BufferedStream bufInStream = new BufferedStream(inStream); BufferedStream bufOutStream = new BufferedStream(outStream); byte[] buf = new byte[4096]; int bytesRead; // copy all data from in to out via the buffer layer while ((bytesRead = bufInStream.Read(buf, 0, 4096)) > 0) bufOutStream.Write(buf, 0, bytesRead); // clean up bufOutStream.Flush(); bufOutStream.Close(); bufInStream.Close(); outStream.Close(); inStream.Close(); } } }