In this chapter, we have discussed the facilities for checking out physical files and directories, and writing basic types of data to a file. The important points we have discussed include:
An object of the class File can represent the path to a physical file.
An object of type FileDescriptor can also represent a physical file.
A FileOutputStream object can be created from a File object and the file will be opened for writing. If the file does not exist it will be created where possible.
A FileChannel object for a file is returned by the getChannel() method for a file stream object.
A buffer contains data to be written to a file, or data that has been read from a file. Only ByteBuffer objects can be used directly in file I/O operations.
A buffer's position is the index position of the first element in the buffer to be written or read. A buffer's limit specifies the index position of the first element that is not to be written or read.
A view buffer is a buffer that allows the data in a backing byte buffer to be viewed as being of a particular basic type.
You insert data into a buffer using its put() methods and retrieve data from it using its get() methods. Relative get() and put() methods increment the buffer's position, whereas absolute get() and put() methods do not.
You write the contents of a ByteBuffer object to a file using a write() method belonging to the FileChannel object for the file.
The amount of data transferred between a buffer and a file in an I/O operation is determined by the buffer's position and limit. Data is read or written starting at the file's current position.
You can lead a horse to water but you can't make him drink.