InputStream.available () возвращает 0 или нет размера файла - PullRequest
0 голосов
/ 22 февраля 2011

Обратите внимание на следующий сегмент кода j2me:

1. FileConnection fc = (FileConnection) Connector.open("file:///root1/photos/2.png");
2. InputStream is = fc.openInputStream();
3. System.out.println(is.available());
4. byte[] fileBytes = new byte[is.available()];
5. int sizef = is.read(fileBytes);
6. System.out.println("filesize:"+sizef);

В этом случае строки 3 и 6 выводят 0 в качестве размера файла.Но когда я ставлю is.read(anyByteArray) эту строку после строки 2, она показывает правильный размер файла.Почему это происходит?Я думаю, что я не очень хорошо понимаю этот класс.Любой указатель для лучшего понимания?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 22 февраля 2011

Не знаю насчет j2me, но Javadoc Java6 для InputStream.available () говорит следующее:

Обратите внимание, что хотя некоторые реализации InputStream будут возвращать общее количество байтов в потоке,многие не будут.Никогда не правильно использовать возвращаемое значение этого метода для выделения буфера, предназначенного для хранения всех данных в этом потоке.

...