transferFrom() is expected to increment the position of source channel by number of bytes read. However, the position is unchanged after transferFrom completes successfully.
------ test code xferTest02() -----------
System.out.println("BEFORE:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size());
System.out.println("BEFORE:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
bytesWritten = fc2.transferFrom(fc1, 0, srcData.length);
System.out.println("AFTER:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size() + ", bytesWritten=" + bytesWritten);
System.out.println("AFTER:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
------- results ------------------
BEFORE:fc1.position=0, fc1.size=2683
BEFORE:fc2.position=0, fc2.size=0
AFTER:fc1.position=0, fc1.size=2683, bytesWritten=2683
AFTER:fc2.position=0, fc2.size=2683
------------------------
build 1.4.0-beta-b61
same results on Solaris, IA, Windows, Linux.
------ test code xferTest02() -----------
System.out.println("BEFORE:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size());
System.out.println("BEFORE:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
bytesWritten = fc2.transferFrom(fc1, 0, srcData.length);
System.out.println("AFTER:fc1.position=" + fc1.position() + ", fc1.size=" + fc1.size() + ", bytesWritten=" + bytesWritten);
System.out.println("AFTER:fc2.position=" + fc2.position() + ", fc2.size=" + fc2.size());
------- results ------------------
BEFORE:fc1.position=0, fc1.size=2683
BEFORE:fc2.position=0, fc2.size=0
AFTER:fc1.position=0, fc1.size=2683, bytesWritten=2683
AFTER:fc2.position=0, fc2.size=2683
------------------------
build 1.4.0-beta-b61
same results on Solaris, IA, Windows, Linux.