Session 13_TP 7

Embed Size (px)

Citation preview

  • Session 7File Handling in C#

    C# Simplified \ Session 7 \ * of 44

    ReviewProperties provide the opportunity to protect a field in a class by reading and writing it using accessors.An indexer allows an object to be indexed in the same way as an array.A delegate contains a reference to a method rather than the method name.There are three steps involved in using delegates that are as follows.Defining a DelegateInstantiating a DelegateUsing a DelegateEvents in C# allow an object to notify other objects about the event, or about a change that has occurred.There are three steps involved to handle events in C# that are as follows.Defining an EventSubscribing objects to that eventNotifying subscribers of the event (when it occurs)

    C# Simplified \ Session 7 \ * of 44

    ObjectivesDiscuss different classes within System.IO namespaceDiscuss different kinds of stream handling with C#List various methods and properties used for file Input/OutputImplement file handling and other stream input handling with C#

    C# Simplified \ Session 7 \ * of 44

    IO Namespace and its ClassesIO namespace includes classes that facilitate reading and writing of data to data streams and files Classes of IO namespace used for handling files are:

    BinaryReaderTextWriterBinaryWriterDirectoryStreamFileTextReaderFileSystemInfo

    C# Simplified \ Session 7 \ * of 44

    BinaryReader and BinaryWriterThese classes are derived from System.Object classThese classes are used to format binary data Data can be read and written from any C# variable to the specified stream

    C# Simplified \ Session 7 \ * of 44

    BinaryReader ClassUsed for reading binary data Methods supported are:

    C# Simplified \ Session 7 \ * of 44

    BinaryWriter ClassIt is used for writing binary data from a C# variable to a specified streamThe most commonly used methods of this class are Close() and Write() methodsThe Close() method is similar to the BinaryReader class Close() methodClose() method is used to close the current stream to which the binary data is being written and also the current BinaryWriter

    C# Simplified \ Session 7 \ * of 44

    BinaryReader and BinaryWriter - Exampleusing System;using System.IO;class BinaryDemo { private const string fname = "Binary.data"; public static void Main(String[] args) { //check if file already exists if (File.Exists(fname)) { Console.WriteLine("{0} already exists!", fname); return; }// if not existing then create a new empty data file. FileStream fs = new FileStream(fname, FileMode.CreateNew);

    C# Simplified \ Session 7 \ * of 44

    BinaryReader and BinaryWriter - Example// Create the writer for data.BinaryWriter w = new BinaryWriter(fs);for (int i = 0; i < 11; i++) {w.Write( (int) i);}Console.WriteLine ("Data has been written to the file!");w.Close();fs.Close();// Create the reader for data.fs = new FileStream(fname, FileMode.Open, FileAccess.Read);BinaryReader r = new BinaryReader(fs);Console.WriteLine("The data file contents are:");

    C# Simplified \ Session 7 \ * of 44

    BinaryReader and BinaryWriter Example// Read data from the data file. for (int i = 0; i < 11; i++) {Console.WriteLine(r.ReadInt32()); } w.Close(); }}

    C# Simplified \ Session 7 \ * of 44

    Stream ClassIt is an abstract class from which different classes are being derived Some of its derived classes are:MemoryStreamBufferedStreamFileStreamNetworkStreamCryptoStream

    C# Simplified \ Session 7 \ * of 44

    MemoryStream classThis class is used to read and write data to memory Some of the methods of MemoryStream are:

    C# Simplified \ Session 7 \ * of 44

    BufferedStream ClassIt is used to read and write to the buffer It has two overloaded constructors with following syntax:public BufferedStream(Stream StName);//constructor type 1

    public BufferedStream(Stream StName, int bsize);//constructor type 2

    C# Simplified \ Session 7 \ * of 44

    BufferedStream Class - Exampleusing System;using System.IO;public class MemoryStreamDemo{public static void Main(){MemoryStream memstr = new MemoryStream();System.IO.BufferedStream buffstr = new System.IO.BufferedStream(memstr);buffstr.WriteByte((byte)100);buffstr.Position =0;byte[] arrb= {1, 2, 3};buffstr.Read(arrb,0,2);Console.WriteLine("The contents of the array are:");

    C# Simplified \ Session 7 \ * of 44

    BufferedStream Class - Outputfor (int i=0;i