60 likes | 155 Views
Chapter 10: Writing Files. Basic Information. You can regard the file as a series of bytes with no specific information about its structure Common file extension give us some clues about the file internal structure Two Modes of accessing file: Sequential access Random access. File Channels.
E N D
Basic Information • You can regard the file as a series of bytes with no specific information about its structure • Common file extension give us some clues about the file internal structure • Two Modes of accessing file: • Sequential access • Random access
File Channels • Why: They are very efficient, because they use OS buffers • A file channel object defines a channel for a physical file • You can create a file channel object using “fileOutputStream.getChannel()” • All the channel related classes and interfaces are found in java.nio.channels
File Channels (Cont.) Your program File Stream Object Buffer Object Channel Object
The Buffer Class • Almost all classes inherit from the Buffer class. They are found in java.nio • ByteBuffer is the only one used in I/O • Viewer Buffers as CharBuffer, Double, etc. • Buffer capacity, position, and limit {capacity(), position(), limit(), remaining(), hasRemaining()} • Buff.limit(512).position(256) • ByteBuffer buff = ByteBuffer.allocate(1024); • IntBuffer intBuf = buf.asIntBuffer(); • ByteBuffer buf = ByteBuffer.wrap(str.getBytes()); • Relative put/get and absolute put/get
The Buffer Class (Cont) • Putting data relatively in a view buffer only update the position of the view buffer NOT the backing buffer • Write data to a file both position and limit should be set properly buf.limit(but.position()).position(0) = buf.flip(); • Ex: WriteAString.java • WriteAStringAsBytes.java • WriteProverbs.java • PrimesToFile.java & PrimeToFile2.java