我有一个存储在远程服务器上的图像文件(即http://example.com/images)。此文件夹中的图像以每 100 毫秒 1 个图像的速度更新 想想传输 MJPEG 图像的网络摄像机。
我正在使用 apache HTTP 客户端 api 连接到我的远程服务器。我正在获取内容流
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://example.com/images/screenshot.jpg");
HttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
我将输入流包装在 BufferedInputStream 中以获得更快的 I/O 。但是由于图像的生成速度非常快,而且它们的平均大小为 250kb。
我想使用 FileChannel 和 MemoryMappedBuffers 等 NIO 功能来提高 I/O 性能以及以非阻塞模式访问远程服务器上生成的图像文件。
但是无论我看到什么样本都在谈论创建以文件对象为参数的 FileInputStream / RandomAccessFiles。
我从远程服务器获取 InputStream 作为响应,我无法将其转换为 FileInputStream 以获取 FileChannel。
我想知道apache http客户端api中是否有任何提供fileChannels的实现。
或者我应该探索套接字以获取通道访问权限。我也探索过 javax.imageIO ,但不确定它是否能满足我对更快 I/O 的要求