Would it be possible to call GetFileSizeEx() (or add a call to GetLastError())
MSDN: > Note that if the return value is INVALID_FILE_SIZE (0xffffffff), an > application must call GetLastError to determine whether the function has > succeeded or failed. The reason the function may appear to fail when it has > not is that lpFileSizeHigh could be non-NULL or the file size could be > 0xffffffff. In this case, GetLastError will return NO_ERROR (0) upon success. > Because of this behavior, it is recommended that you use GetFileSizeEx > instead. There is a similar problem for for SetFilePosition(): MSDN: > Note Because INVALID_SET_FILE_POINTER is a valid value for the low-order > DWORD of the new file pointer, you must check both the return value of the > function and the error code returned by GetLastError to determine whether or > not an error has occurred. If an error has occurred, the return value of > SetFilePointer is INVALID_SET_FILE_POINTER and GetLastError returns a value > other than NO_ERROR. For a code example that demonstrates how to check for > failure, see the Remarks section in this topic. Mike On Nov 18 2010, at 13:43 , Mandy Chung wrote: > 6402006 FileInputStream.available() returns negative values when reading a > large file > > Webrev at: > http://cr.openjdk.java.net/~mchung/6402006/webrev.00/ > > This fixes a bug in the windows implementation of io_util.c that ignores the > high-order doubleword of the file size in computing the end of the file. > Thus the available() method incorrectly returns only the low-order 32-bit for > large files. > > Thanks > Mandy