I missed the mail about the fix given by Alan, please just ignore the previous mail.
2011/2/18 Sean Chou <[email protected]> > > Oh, I should have done a little more investigation. > > Is there a plan to fix it? I can provide a patch if it is needed. > > 2011/2/17 Alan Bateman <[email protected]> > > Sean Chou wrote: >> >>> Hi, >>> I find there is a mismatch between the spec and the behavior of >>> java.io.FileOutputStream.getChannel(). >>> >>> The spec reads: "The initial position of the returned channel will be >>> equal to the number of bytes written to the file so far unless this >>> stream is in append mode, in which case it will be equal to the size >>> of the file. " >>> >>> But we'll get size 0 in such situation. Here is the testcase: >>> >>> //Testcase >>> import java.io.*; >>> >>> public class FileOutputStreamTest{ >>> public static void main(String args[]) throws Exception{ >>> File tmpfile = File.createTempFile("FileOutputStream", "tmp"); >>> tmpfile.deleteOnExit(); >>> FileOutputStream fos = new FileOutputStream(tmpfile, false); >>> fos.write(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); >>> fos.close(); >>> >>> fos = new FileOutputStream(tmpfile, true); >>> long size = fos.getChannel().position(); >>> if (10 != size){ >>> // This return value is 0, mismatching the spec >>> System.out.println("Position Error Detected: except 10, but >>> was " + size); >>> } >>> fos.close(); >>> } >>> } >>> // End of the testcase >>> >>> Any comments? >>> >>> This is a long standing issue, 6526860 but hasn't been high priority as >> it probably isn't too common to query or change the file position when >> opened for append. >> >> -Alan. >> > > > > -- > Best Regards, > Sean Chou > > -- Best Regards, Yixun Zhou
