A portable, flexible file i/o abstraction