Per spec: "If the given position is greater than the file's current size, then no bytes are transferred"
However, the constraint does not hold.
------- test code FCtransferFrom.java: xferTest03()
// make sure no data is transfered when 'position' parameter
// passed to transferFrom() is more than file channel size.
System.out.println("BEFORE:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size() + ", srcData.length=" + srcData.length);
System.out.println("BEFORE:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
bytesWritten = fc2.transferFrom(fc1, fc2.size() + 1, srcData.length);
System.out.println("AFTER:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size() + ", bytesWritten=" + bytesWritten);
if (bytesWritten != 0) {
return TestHelper.testFail(testName +
" FAIL: bytesWritten: expected=0, actual=" + bytesWritten);
}
------- results ------------------
BEFORE:fc1.position=0, fc1.size=5334, srcData.length=5334
BEFORE:fc2.position=0, fc2.size=0
AFTER:fc2.position=0, fc2.size=5335, bytesWritten=5334
TestFailException: xferTest03 FAIL: bytesWritten: expected=0, actual=5334
at TestHelper.testFail(TestHelper.java:70)
at FCtransferFrom.xferTest03(FCtransferFrom.java:325)
:
:
------------------------
build 1.4.0-beta-b61
However, the constraint does not hold.
------- test code FCtransferFrom.java: xferTest03()
// make sure no data is transfered when 'position' parameter
// passed to transferFrom() is more than file channel size.
System.out.println("BEFORE:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size() + ", srcData.length=" + srcData.length);
System.out.println("BEFORE:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
bytesWritten = fc2.transferFrom(fc1, fc2.size() + 1, srcData.length);
System.out.println("AFTER:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size() + ", bytesWritten=" + bytesWritten);
if (bytesWritten != 0) {
return TestHelper.testFail(testName +
" FAIL: bytesWritten: expected=0, actual=" + bytesWritten);
}
------- results ------------------
BEFORE:fc1.position=0, fc1.size=5334, srcData.length=5334
BEFORE:fc2.position=0, fc2.size=0
AFTER:fc2.position=0, fc2.size=5335, bytesWritten=5334
TestFailException: xferTest03 FAIL: bytesWritten: expected=0, actual=5334
at TestHelper.testFail(TestHelper.java:70)
at FCtransferFrom.xferTest03(FCtransferFrom.java:325)
:
:
------------------------
build 1.4.0-beta-b61