Copying Files
Example 6-2 is a New
I/O version of the FileCopy
class of Example
3-2. It copies the file named in its first command-line argument
to the file named second or, if there is no second argument, to
standard output. This example demonstrates a special bulk-transfer
method that is unique to the FileChannel
class: the transferTo(
)
method copies the entire contents of the file to the
specified channel without the need for any explicitly allocated
ByteBuffer
objects. This method is
particularly useful for web servers and other applications that
transfer file contents. The transferFrom(
)
method performs the reverse operation and can be useful
for programs such as FTP clients.
Note that this example omits the safety features of the original
FileCopy
program and can overwrite
existing files, so be careful when using it.
Example 6-2. FileCopy2.java
package je3.nio; import java.io.*; import java.nio.channels.*; /** * FileCopy2.java: this program copies the file named in its first argument * to the file named in its second argument, or to standard output if there * is no second argument. **/ public class FileCopy2 { public static void main(String[ ] args) { FileInputStream fin = null; // Streams to the two files. FileOutputStream fout = null; // These are closed in the finally block. try { // Open a stream to the input file and get a channel from it fin = new FileInputStream(args[0]); FileChannel in = fin.getChannel( ); // Now get the output channel WritableByteChannel out; if ...
Get Java Examples in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.