11. File Systems

The System.IO namespace is the base class provides all the necessary classes, methods, and properties for manipulating directories and files to create, copy, or delete it

        Working with Files under a Directory
        Creating Subdirectories
        Creating Files
        

Stream: A stream represents a chunk of data.


        FileStream  
         The FileStre3am class supports random access to files through its Seek method
  
        MemoryStream 
         The data is directly accessible in memory. 
 
        BufferedStream 
         The BufferedStream can be used as a temporary location to read or 
         write information, 
         which can later be committed to permanent storage.
 
        StreamReader 
         Read textual information
 
        StringReader 
         Read textual Information to a string buffer.
        StreamWriter 
         Write textual information
  
        StringWriter 
         Write textual Information from a string buffer.
 
        BinaryReader 
         Reads binary data from a stream.
 
        BinaryWriter 
         Writes binary data to a stream.
        
File IO Examples
        using System;
        using System.IO;
        namespace ConsoleApp
        {
            public static class FileSystems
            {
                //Get Directory Info
                public static void GetDirectoryInfo()
                {
                    DirectoryInfo dir = new DirectoryInfo("C:\\TEMP");
                    FileInfo[] NumberOffiles = dir.GetFiles("*.txt");
                    Console.WriteLine("Total number of files {0}", NumberOffiles.Length);
           
                }
        
                //Create SubDirectory
                public static void CreateSubDirectories()
                {
                    DirectoryInfo dir = new DirectoryInfo("C:\]temp");
                    try
                    {
                        dir.CreateSubdirectory("A");
                        dir.CreateSubdirectory("\\A\\B");
                    }
                    catch (IOException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                //Create File and Delete File
                public static void FileInoTest()
                {
                    FileInfo f = new FileInfo("c:\\temp\mytest1.txt");
                    FileStream fs = f.Create();
                    Console.Write("Press a key to delete file");
                    Console.Read();
                    fs.Close();
                    f.Delete();
                }
                //Writing to a Text File by Using the StreamWriter Class
                public static void WriteToTextFile()
                {
           
                    FileInfo f = new FileInfo("C:\\Temp\\CourseDetails.txt");
                    StreamWriter writer = f.CreateText();
                    writer.WriteLine("C# Course Details");
                    writer.WriteLine("Faculty: Murthy");
                    writer.Write("Atlanta, GA, ");
                    writer.Write(writer.NewLine);
                    //Closing automatically flushes
                    writer.Close();
                    Console.WriteLine("Created file and wrote CourseDetails");
                }
                //Reading from a Text File
                public static void ReadFromTextFile()
                {
                    StreamReader s = File.OpenText("C:\\Temp\\CourseDetails.txt");
                    string CourseDetails = null;
                    while ((CourseDetails = s.ReadLine()) != null)
                    {
                        Console.WriteLine(CourseDetails);
                    }
                    s.Close();
                }
                //Write to file using FileStream
                public static void FileStreamWrite()
                {
                    // Create a text file C:\temp\mcb.txt 
                    FileStream fs = new FileStream("c:\\temp\\CourseDetails.txt", 
                                        FileMode.OpenOrCreate, FileAccess.Write);
                    StreamWriter m_streamWriter = new StreamWriter(fs);
           
                    m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
                    m_streamWriter.WriteLine("C# Course Details");
                    m_streamWriter.WriteLine("Faculty: Murthy");
                    m_streamWriter.WriteLine("Atlanta, GA, ");
          
                    m_streamWriter.Flush();
                }
                //Read from a file using FileStream
                public static void FileStreamRead()
                {
                    string strPath = "c:\\temp\CourseDetails.txt";
                    FileStream fStream = new FileStream
                               (strPath, FileMode.Open, FileAccess.Read);
                    StreamReader sReader = new StreamReader(fStream);
                    string s = sReader.ReadToEnd();
                    sReader.Close();
                    Console.Write(s);
                }
                public static void MemorySreamTest()
                {
                    MemoryStream myMemStream = new MemoryStream();
                    myMemStream.Capacity = 100;
                    //Write byes to stream
                    for (int i = 0; i < 100; i++)
                        myMemStream.WriteByte((byte)i);
                    myMemStream.Position = 0;
                    //Read bytes from stream
                    for (int i = 0; i < 100; i++)
                        Console.Write(myMemStream.ReadByte());
                    myMemStream.Close();
                }
            }   
        }