Csharp/C Sharp/File Stream/BufferedStream — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 11:45, 26 мая 2010

Create a FileStream for the BufferedStream.

using System;
using System.IO;
class BufStreamApp
{
    static void Main(string[] args)
    {
        FileStream fs = new FileStream("Hoo.txt",FileMode.Create, FileAccess.ReadWrite);
        BufferedStream bs = new BufferedStream(fs);
        Console.WriteLine("Length: {0}\tPosition: {1}",bs.Length, bs.Position);
   
        for (int i = 0; i < 64; i++)
        {
            bs.WriteByte((byte)i);
        }
        Console.WriteLine("Length: {0}\tPosition: {1}", bs.Length, bs.Position);
        byte[] ba = new byte[bs.Length];
        bs.Position = 0;
        bs.Read(ba, 0, (int)bs.Length);
        foreach (byte b in ba)
        {
            Console.Write("{0,-3}", b);
        }
   
        string s = "Foo";
        for (int i = 0; i < 3; i++)
        {
            bs.WriteByte((byte)s[i]);
        }
        Console.WriteLine("\nLength: {0}\tPosition: {1}\t",bs.Length, bs.Position);
   
        for (int i = 0; i < (256-67)+1; i++)
        {
            bs.WriteByte((byte)i);
        }
        Console.WriteLine("\nLength: {0}\tPosition: {1}\t", bs.Length, bs.Position);
   
        bs.Close();
    }
}


illustrates use of BufferedStreams

/*
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();
    }
  }
}