Name: nt126004 Date: 12/19/2002 FULL PRODUCT VERSION : java version "1.4.1_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01) Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode) FULL OPERATING SYSTEM VERSION : Microsoft Windows XP [Version 5.1.2600] A DESCRIPTION OF THE PROBLEM : Contrary to the examples in the New I/O APIs document, closing a FileChannel does not close the file. Those examples include code such as the following. // Open the file and then get a channel from the stream FileInputStream fis = new FileInputStream(f); FileChannel fc = fis.getChannel(); // Close the channel and the stream fc.close(); This code should actually invoke fis.close(), which would in fact close both the channel and the stream. This code example is all the more curious because the FileChannelImpl class clearly states that FileInputStream, FileOutputStream, and RandomAccessFile are ?responsible for closing file descriptor.? For example, import java.io.*; import java.nio.channels.FileChannel; class Test { public static void main(String[] args) throws IOException { FileOutputStream file = new FileOutputStream("output.txt"); FileChannel channel = file.getChannel(); channel.close(); PrintWriter writer = new PrintWriter(file); writer.println("testing, testing, testing"); writer.close(); } } This program compiles and writes testing, testing, testing to the output.txt file, showing that closing a channel does not close the corresponding file. It is therefore important to save a reference to the FileInputStream, FileOutputStream, or RandomAccessFile used to invoke the getChannel() method (otherwise the file descriptor is not released). Here is the site URL with the examples: http://java.sun.com/j2se/1.4.1/docs/guide/nio/example/index.html But this is the exact same documentation distributed with the SDK/J2SE. The problem with only closing the file channel is that it does not release the file descriptor. I am sure your new I/O guys will concur. STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : 1.This is a documentation bug 2. 3. REPRODUCIBILITY : This bug can be reproduced always. CUSTOMER WORKAROUND : this is a documentation bug (Review ID: 178499) ======================================================================
|