Input-output 
is provided through language-defined packages, each of which is a child 
of the root package Ada. The generic packages Sequential_IO and Direct_IO 
define input-output operations applicable to files containing elements 
of a given type. The generic package Storage_IO supports reading from 
and writing to an in-memory buffer. Additional operations for text input-output 
are supplied in the packages Text_IO, Wide_Text_IO, and Wide_Wide_Text_IO. 
Heterogeneous input-output is provided through the child packages Streams.Stream_IO 
and Text_IO.Text_Streams (see also 
13.13). 
The package IO_Exceptions defines the exceptions needed by the predefined 
input-output packages.