How to use indexer in C#

1 Answer

0 votes
using System;
using System.IO;

namespace ConsoleApplication_C_Sharp
{
    public class myFile
    {
        Stream stream;      

        public myFile(string fileName)
        {
            stream = new FileStream(fileName, FileMode.Open);
        }

        public void Close()
        {
            stream.Close();
            stream = null;
        }

        // Indexer to read/write from file
        public byte this[long index]   
        {
            // Read one byte from offset index 
            get
            {
                byte[] buffer = new byte[1];
                stream.Seek(index, SeekOrigin.Begin);
                stream.Read(buffer, 0, 1);
                return buffer[0];
            }
            // Write one byte at offset index 
            set
            {
                byte[] buffer = new byte[1] { value };
                stream.Seek(index, SeekOrigin.Begin);
                stream.Write(buffer, 0, 1);
            }
        }

        public long Length
        {
            get
            {
                return stream.Seek(0, SeekOrigin.End);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            myFile myfile = new myFile("d:\\test.txt");

            Console.WriteLine("file length = {0}", myfile.Length);

            Console.WriteLine("myfile[3] = {0}", myfile[3]);

            Console.WriteLine("myfile[3] = {0}", myfile[12]);

            myfile[3] = 97;

            myfile[6] = 65;


            myfile.Close();
        }
    }
}


/*

file before:
 
c# .net vb java
javascript php asp.net c

*/

/*

file after:

c#a.nAt vb java
javascript php asp.net c

*/


/*
run:
    
file length = 43
myfile[3] = 32
myfile[3] = 106

*/

 



answered Apr 27, 2017 by avibootz

Related questions

1 answer 117 views
1 answer 119 views
119 views asked Jan 15, 2017 by avibootz
1 answer 115 views
115 views asked Jan 5, 2017 by avibootz
1 answer 130 views
...