GIO (software)

GIO (Gnome Input/Output) is a library, designed to present programmers with a modern and usable interface to a virtual file system. It allows applications to access local and remote files with a single consistent API, which was designed "to overcome the shortcomings of GnomeVFS" and be "so good that developers prefer it over raw POSIX calls."

GIO serves as low-level system library for the GNOME Shell/GNOME/GTK software stack and is being developed by The GNOME Project. It is maintained as a separate library, libgio-2.0, but it is bundled with GLib. GIO is free and open-source software released under the GNU Lesser General Public License.

Features

 * The abstract file system model of GIO consists of a number of interfaces and base classes for I/O and files.
 * There are a number of stream classes, similar to the input and output stream hierarchies that can be found in frameworks like Java.
 * There are interfaces related to applications and the types of files they handle.
 * There is a framework for storing and retrieving application settings.
 * file type detection with xdgmime (xdg = X Desktop Group = freedesktop.org)
 * file monitoring with inotify
 * file monitoring with FAM
 * There is support for network programming, including name resolution, lowlevel socket APIs and highlevel client and server helper classes.
 * There is support for connecting to D-Bus, sending and receiving messages, owning and watching bus names, and making objects available on the bus.

Beyond these, GIO provides facilities for file monitoring, asynchronous I/O and filename completion. In addition to the interfaces, GIO provides implementations for the local case. Implementations for various network file systems are provided by the GVfs package as loadable modules.