我假设这是关于
FileChannel.map
方法,该方法可以将文件映射到可由
MappedByteBuffer
.
在文档中
文件通道
方法,如果文件映射为只读,则任何修改缓冲区的尝试都将导致
ReadOnlyBufferException
:
文件的区域可以映射到
三种模式之一的存储器:
-
只读:任何修改尝试
产生的缓冲区将导致
只读BufferException
被扔掉
(
MapMode.READ_ONLY
)
关于
ByteBuffer.array
方法,根据问题的原因,有两种类型的异常被抛出:
投掷:
-
只读BufferException
-如果此缓冲区由数组支持,但为只读
-
UnsupportedOperationException
-如果此缓冲区没有可访问的数组支持
尽管问题中没有提到抛出的异常,但可能是只读文件导致了
只读BufferException
被
array
方法。
此外,还应提到
字节缓冲数组
方法是可选操作:
返回支持此操作的字节数组
缓冲器(可选操作)。
以确保
数组
方法将返回
byte[]
可以使用的,调用
hasArray
文件中建议的方法
数组
方法:
调用
hasArray
方法前
调用此方法以便
确保此缓冲区具有
可访问的备用阵列。