Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
The functions, classes, and methods you use to interact with the file system are collectively referred to as the file system's application programming interface (API). In Java, the file system API is neatly organized in the java.io package. Not so in Objective-C. The Objective-C Cocoa framework provides a simple interface to the file system that's adequate for most needs. Parallel to that is the Core Services framework. Core Services provides numerous advanced file system functions along with a set of C APIs that mimic the original file services of the classic Macintosh operating system (often referred to as the Carbon API). Underneath both of these APIs is the core BSD API. These are the C functions that actually implement most of the file services in Mac OS X. Much of the Cocoa and Core Services are just compatibility APIs that do little more than call a BSD function to get the work done.
A conceptual difference between Objective-C and Java is that much of Java is organized around abstract classes that read and write serial data (java.io.Reader, java.io.Writer, java.io.InputStream, java.io.OutputStream), with subclasses that work with data files. Objective-C (and C) tend to use purpose-built functions for working with data files, and reserve the use of data stream classes for network ports and communication pipes. There is some overlap, but much less than in Java.