er, except it can... I've even thrown in some exception handling First the test program and you can cut-and-paste the Ada code you need to mimic your original C code Secondly the output of running this program. Should be portable, but for reference, I used a 700MHz Intel Celeron WinNT 4 (Build 1381) GNAT 3.13p --------------------------------------------------------- test program: with Ada.Sequential_IO; with Ada.Text_IO; use Ada.Text_IO; procedure Tester is subtype Buffer is String (1 .. 4_096); My_Buffer : Buffer; package IO is new Ada.Sequential_IO (Buffer); My_File : IO.File_Type; begin Put_Line ("File 1"); -- Have tested this and it works just fine -- Note the big difference is in the handling -- of elements that are not the same size as -- the buffer. In Ada, you get an exception - coz -- your input data is valid, right? In C, you -- get a return value that doesn't equal the -- value of 'size'. -- -- This file is of the correct size -- IO.Open (My_File, IO.In_File, "test.txt"); while not IO.End_Of_File (My_File) loop begin IO.Read (My_File, My_Buffer); exception when others => Put_Line ("oops"); exit; end; end loop; IO.Close (My_File); Put_Line ("File 2"); -- This file is one byte too big -- IO.Open (My_File, IO.In_File, "test2.txt"); while not IO.End_Of_File (My_File) loop begin IO.Read (My_File, My_Buffer); exception when others => Put_Line ("oops"); exit; end; end loop; IO.Close (My_File); Put_Line ("Finished"); exception when others => Put_Line ("Exception"); if IO.Is_Open (My_File) then IO.Close (My_File); end if; end Tester; --------------------------------------------------------- result: File 1 File 2 oops Finished Sergio wrote in message news:J3Iv6.56705$CL6.1997020@telenews.teleline.es... > Ada simply cannot do that, sorry. > Ada sucks. > > "Sergio" escribi� en el mensaje > news:n5su6.24687$CL6.767652@telenews.teleline.es... > > How could I do this in Ada? Could I do it at a reasonable speed? I don't > > know how, please help me. Thanks > > > > void WorkFile(char *fileName) > > { > > char Buffer[4096]; > > FILE *handle; > > > > handle = fopen(fileName, "r"); > > while (!feof(handle)) > > { > > fread(handle, 4096, 1, buffer); /* Read data from file to buffer > */ > > Work(Buffer); /* ... do some work with such data */ > > } > > } > > > > > > > >