//循环的目的为了按照字节反转文件。using System;
using System.IO;public class TestIndex
{
public static void Main(String[] args)
{
if(0 == args.Length)
{
Console.WriteLine("please input filename");
return ;
}

IndexSample.FileByteArray cReverse = new IndexSample.FileByteArray(args[0]);
long lLen = cReverse.FileLength;

//reverse file
for(long lLoop = 0; lLoop < lLen/2; lLoop++)
{
byte btTemp = cReverse[lLoop];
cReverse[lLoop] = cReverse[lLen-lLoop-1];
cReverse[lLen-lLoop-1] = btTemp;
}
cReverse.Close();
}
}namespace IndexSample
{
/// <summary>
/// FileByteArray is used to access a file as a byte array.
/// </summary>
public class FileByteArray
{
private Stream cStream; public FileByteArray(String strFileName)
{
cStream = new FileStream(strFileName, FileMode.Open);
}

//close Stream at the end.
public void Close()
{
cStream.Close();
cStream = null;
}

//provide file's IO access operate
public byte this[long lIndex]
{
get
{
byte[] btBuffer = new byte[1];
cStream.Seek(lIndex, SeekOrigin.Begin);
cStream.Read(btBuffer, 0, 1);
return btBuffer[0];
}
set
{
byte[] btBuffer = new byte[1] {value};
cStream.Seek(lIndex, SeekOrigin.Begin);
cStream.Write(btBuffer, 0, 1);
}
}

public long FileLength
{
get
{ return cStream.Seek(0, SeekOrigin.End);}
}
}
}