Package io.netty.channel
Interface FileRegion
- All Superinterfaces:
ReferenceCounted
- All Known Implementing Classes:
DefaultFileRegion
A region of a file that is sent via a
Channel
which supports
zero-copy file transfer.
Upgrade your JDK / JRE
FileChannel.transferTo(long, long, WritableByteChannel)
has at least
four known bugs in the old versions of Sun JDK and perhaps its derived ones.
Please upgrade your JDK to 1.6.0_18 or later version if you are going to use
zero-copy file transfer.
- 5103988 - FileChannel.transferTo() should return -1 for EAGAIN instead throws IOException
- 6253145 - FileChannel.transferTo() on Linux fails when going beyond 2GB boundary
- 6427312 - FileChannel.transferTo() throws IOException "system call interrupted"
- 6470086 - FileChannel.transferTo(2147483647, 1, channel) causes "Value too large" exception
Check your operating system and JDK / JRE
If your operating system (or JDK / JRE) does not support zero-copy file transfer, sending a file withFileRegion
might fail or yield worse
performance. For example, sending a large file doesn't work well in Windows.
Not all transports support it
-
Method Summary
Modifier and TypeMethodDescriptionlong
count()
Returns the number of bytes to transfer.long
position()
Returns the offset in the file where the transfer began.retain()
Increases the reference count by1
.retain
(int increment) Increases the reference count by the specifiedincrement
.touch()
Records the current access location of this object for debugging purposes.Records the current access location of this object with an additional arbitrary information for debugging purposes.long
Deprecated.long
Returns the bytes which was transferred already.long
transferTo
(WritableByteChannel target, long position) Transfers the content of this file region to the specified channel.Methods inherited from interface io.netty.util.ReferenceCounted
refCnt, release, release
-
Method Details
-
position
long position()Returns the offset in the file where the transfer began. -
transfered
Deprecated.Usetransferred()
instead.Returns the bytes which was transferred already. -
transferred
long transferred()Returns the bytes which was transferred already. -
count
long count()Returns the number of bytes to transfer. -
transferTo
Transfers the content of this file region to the specified channel.- Parameters:
target
- the destination of the transferposition
- the relative offset of the file where the transfer begins from. For example, 0 will make the transfer start fromposition()
th byte andcount()
- 1 will make the last byte of the region transferred.- Throws:
IOException
-
retain
FileRegion retain()Description copied from interface:ReferenceCounted
Increases the reference count by1
.- Specified by:
retain
in interfaceReferenceCounted
-
retain
Description copied from interface:ReferenceCounted
Increases the reference count by the specifiedincrement
.- Specified by:
retain
in interfaceReferenceCounted
-
touch
FileRegion touch()Description copied from interface:ReferenceCounted
Records the current access location of this object for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
. This method is a shortcut totouch(null)
.- Specified by:
touch
in interfaceReferenceCounted
-
touch
Description copied from interface:ReferenceCounted
Records the current access location of this object with an additional arbitrary information for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you viaResourceLeakDetector
.- Specified by:
touch
in interfaceReferenceCounted
-
transferred()
instead.