Найти, если InputStream объекта DataHandler пуст - PullRequest
0 голосов
/ 30 ноября 2009

В моем приложении я разрабатываю веб-сервис, который получает прикрепленный файл.Файл сопоставлен с объектом DataHandler через JaxB, и у меня есть доступ к файлу через DataHandler.getInputStream ()

Моя проблема заключается в следующем: когда атрибут файла существует в запросе веб-службы, но файл не прикрепленЯ все еще получаю объект DataHandler, и его getInputStream (). Available () = 11 байт (заголовок, который я предполагаю ... ??).

Так я могу знать, что inputStream пуст?

Спасибо, Алон

1 Ответ

1 голос
/ 30 ноября 2009

Прочитайте и проанализируйте данные так, как они должны быть проанализированы. Ответ там.

InputStream#available() определенно не возвращает длину потока или около того, как вы, кажется, думаете. В некоторых случаях это (по стечению обстоятельств) может, но вы не должны на это полагаться. Он просто возвращает количество байтов, доступных для чтения, не блокируя другие потоки. Просто прочитайте поток обычным способом Java IO до тех пор, пока последний бит не вернет -1, а затем перехватите все полученные данные.

...