Вы можете встроить браузер в GUI Swing / AWT с помощью API JDIC . Я не вижу упоминания OS X , поэтому он не может быть вам полезен.
1) Не могло бы быть так очень доступных данных для чтения (другой конец канала еще, возможно, не отправил так много данных), и класс с реализацией мог бы не блокироваться (т.е. это просто возвратит то, что это может, вместо того, чтобы ожидать достаточного количества данных для обрабатывания запроса).
Я не знаю, ведут ли какие-либо реализации на самом деле себя таким образом, однако, но интерфейс разработан для разрешения его.
Другая опция состоит просто в том, что файл закрывается отчасти посредством чтения.
2) Любой readFully () (который будет всегда ожидать достаточного количества входа или иначе сбоя) или называет skipBytes () в цикле. Я думаю, что первый, вероятно, лучше, если массив не действительно обширен.
Josh Bloch недавно предал гласности это. Это последовательно в этом, InputStream.read, как гарантируют, не считает столько байтов, сколько это могло. Однако это совершенно бессмысленно как метод API. InputStream должен, вероятно, также иметь readFully.
Оказывается, что readFully () добавляет больше производительности наверху, чем я был готов выносить.
В конце я пошел на компромисс: Я называю skipBytes () однажды, и если это возвращает меньше, чем правильное число байтов, я называю readFully () для остающихся байтов.