FileSys::Read( const char *, int, Error * )
Attempt to read len bytes of data from the object
referenced by the file handle (returned by the Open() method) to the buffer
pointed to by buf. Upon successful completion, Read() returns the number of
bytes actually read and placed in the buffer.
|
Virtual? |
Yes |
|
|
Class |
||
|
Arguments |
|
pointer to buffer into which to read data |
|
|
length of data to read |
|
|
|
returned error status |
|
|
Returns |
|
number of bytes actually read |
Notes
The default implementation of Read() is called every time
there is a need to read data from the file referenced by the Open() call.
Your implementation must correctly report any system errors that might occur during I/O.
Example
To use Read() to read a
line from a log file:
char line[80];
m.Set( msg );
FileSys *f = FileSys::Create( FST_ATEXT );
Error e;
f->Set( "C:\\logfile.txt" );
f->Open( FOM_READ, &e );
f->Read( line, 80, &e );
f->Close( &e );
To reimplement Read() to
report errors with Error::Sys(), provide debugging
output, and use the FileSysDemo member “fd” to hold the file
handle returned from the read() system call:
int FileSysDemo::Read( char *buf, int len, Error *e )
{
int bytes;
if ( ( bytes = read( fd, buf, len ) ) < 0 )
e->Sys( "read", Name() );
if ( DEBUG )
{
printf( "debug (Read): %d bytes\n", bytes );
}
return( bytes );
}