У меня есть файл изображения, хранящийся на удаленном сервере (т.е. http://example.com/images).The изображения в этой папке обновляются со скоростью 1 изображение в 100 миллисекунд
Подумайте о ip-камерах, которые передают изображения 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 для более быстрого ввода-вывода. Но поскольку изображения генерируются с очень высокой скоростью, а их размер составляет в среднем 250 КБ.
Я хотел бы использовать функции NIO, такие как FileChannel, а также MemoryMappedBuffers для
повысить производительность ввода-вывода, а также получить доступ к сгенерированным файлам изображений на удаленном сервере в неблокирующем режиме.
Но все примеры, которые я видел, говорят о создании FileInputStream / RandomAccessFiles, которые принимают File Object в качестве параметра.
Я получаю InputStream как ответ от удаленного сервера, который не могу преобразовать в FileInputStream для получения FileChannel.
Я хотел бы знать, есть ли какая-либо реализация в apache http client api, которая выдает fileChannels.
Или я должен исследовать сокеты, чтобы получить доступ к каналу.
Я также исследовал javax.imageIO, но не уверен, что он удовлетворит мое требование более быстрого ввода / вывода