asd*_*jkl 10 java io nio stream
我如何寻找(改变位置)a ByteArrayInputStream(java.io)?它是如此明显的东西,但我似乎无法在任何地方找到一个方法(mark/ reset是不够的,我需要将位置设置到任何地方InputStream).
如果它无法使用java.io并且我必须切换到java.nio并使用a ByteBuffer,我怎么能得到类似于DataOutputStream包装ByteArrayOutputStream使用的东西java.nio?我没有找到任何类型的可自动调整大小的缓冲区.
编辑:我找到了一种方法来实现我正在尝试做的事情,但它有点凌乱.ImageIO.createImageInputStream创建一个ImageInputStream,这正是我想要的(可以搜索和读取基元).但是,使用ByteArrayInputStream返回a FileCacheImageInputStream,这基本上意味着它将字节数组复制到文件中以便进行搜索.
这是我第一次尝试使用Java IO类,但它完全是否定的.它缺少一些基本的(IMO)的特点,而且它有很多方法可以做同样的事情(例如,从文件中您可以使用读取元RandomAccessFile,DataInputStream+ FileInputStream,FileImageInputStream,FileChannel+ ByteBuffer,也许甚至更多).
Jon*_*eet 10
你用reset()/ skip().我不能说它是世界上最好的API,但它应该工作:
public void seek(ByteArrayInputStream input, int position)
throws IOException
{
input.reset();
input.skip(position);
}
Run Code Online (Sandbox Code Playgroud)
当然,这假设没有人打过电话mark().
| 归档时间: |
|
| 查看次数: |
6427 次 |
| 最近记录: |