Mega Code Archive

 
Categories / C# Tutorial / Windows
 

API File reader

using System; using System.Runtime.InteropServices; using System.Text;     class APIFileReader     {         uint GenericRead = 0x80000000;         uint OpenExisting = 3;         uint UseDefault = 0;         int fileHandle;         [DllImport("kernel32", SetLastError = true)]         static extern unsafe int CreateFile(string filename,uint desiredAccess,uint shareMode,uint attributes,uint creationDisposition,uint flagsAndAttributes,uint templateFile);         [DllImport("kernel32", SetLastError = true)]         static extern unsafe bool ReadFile(int hFile,void* lpBuffer,int nBytesToRead,int* nBytesRead,int overlapped);         public APIFileReader(string filename)         {             fileHandle = CreateFile(filename,GenericRead, UseDefault, UseDefault, OpenExisting,UseDefault, UseDefault);          }         public unsafe int Read(byte[] buffer, int index, int count)         {             int bytesRead = 0;             fixed (byte* bytePointer = buffer)             {                 ReadFile(fileHandle, bytePointer + index, count, &bytesRead, 0);              }             return bytesRead;         }     }     class Test     {         public static void Main()         {             APIFileReader fileReader = new APIFileReader("data.txt");             int BuffSize = 128;             byte[] buffer = new byte[BuffSize];             ASCIIEncoding asciiEncoder = new ASCIIEncoding();             while (fileReader.Read(buffer, 0, BuffSize) != 0)             {                 Console.Write("{0}", asciiEncoder.GetString(buffer));             }         }     }