Rapture's I/O library is designed to provide a unifying foundation for handling URLs consistently and extensibly, and for streaming data (typically in the form of bytes or characters). The library builds upon Java's I/O functionality, but makes extensive use of type classes to maximize generality and minimize code duplication.
This means that you use the same methods irrespective of whether you're streaming bytes or characters, or whether you're streaming from an HTTP URL or to a File.
These are equivalent to Java's Reader, Writer, InputStream and OutputStream interfaces, but generalize the type of data being transferred. Inputs and Outputs take a type parameter which specifies the units of data being transferred, typically Byte or Char, but other possibilities exist.
For hierarchical structures, such as a filesystem, data is normally referenced using slash-delimited paths, so Rapture provides a standard implementation of a path. This is further generalized to support URLs which describe not only the location of a resource, but the scheme by which it can be accessed, such as HTTP or FTP.
Encodings are an aspect of stream handling you can (unfortunately) go a long way without understanding, however being aware of them should be a fundamental requirement. Whilst the default encoding may be adequate for many purposes, this is a presumption Rapture I/O does not make for you. In order to process any streams as characters, an encoding must be specified, so there's never any doubt as to which encoding is being used. As the encoding is often a global default, this is done through an implicit val, so you only have to do it once and it applies within the scope of that implicit.
In Java, there are classes for collecting bytes and characters into arrays and strings. In Rapture I/O, there's a method called slurp which will accumulate any kind of stream into any kind of collection, provided there's a type class object for your chosen types. Of course, all the sensible ones are there already.