1. О inputstream.read ()
При чтении данных из потока данных график прост, а метод inputstream.read () часто используется. Этот метод состоит в том, чтобы читать только один байт из потока за раз, что будет очень неэффективным. Лучшим способом является использование метода inputstream.read (byte [] b) или inputstream.read (byte [] b, int off, int len) для чтения нескольких байтов за раз.
2. о методе доступного () класса InputStream
При чтении нескольких байтов часто используется метод inputstream.vailable (). Следует отметить, что если этот метод используется для чтения данных из локальных файлов, он, как правило, не сталкивается с проблемами, но если он используется для сетевых операций, он часто сталкивается с некоторыми проблемами. Например, когда сокет общается, другая сторона явно отправила 1000 байтов, но его программа вызывает метод доступного () только 900, или 100, или даже 0. Он кажется немного необъяснимым и не может найти причину. Фактически, это связано с тем, что сетевая связь часто прерывита, а череда байтов часто отправляется в нескольких партиях. Локальная программа вызывает метод доступного () иногда получает 0. Это может быть потому, что другая сторона еще не ответила, или это может быть потому, что другая сторона ответила, но данные не были доставлены в местную область. Другая сторона отправила вам 1000 байтов, и, возможно, она прибыла в 3 партии.
Если вы напишите код таким образом:
int count = in.vailable ();
При выполнении сетевых операций часто возникают ошибки, потому что при вызове метода доступного () данные, отправленные в отправку, еще не прибыли, а количество, которое вы получаете, составляет 0.
Нужно изменить это так:
int count = 0;
3. О inputstream.read (byte [] b) и inputstream.read (byte [] b, int off, int len)
Оба метода используются для чтения нескольких байтов из потока. Например, в первом методе программисты часто надеются, что программа может читать байты B.length, но реальная ситуация заключается в том, что система часто не может читать так много. После тщательного чтения инструкций Java API вы обнаружите, что этот метод не гарантирует, что он может прочитать так много байтов, он может гарантировать только, что он может прочитать до многих байтов (не менее 1). Поэтому, если вы хотите, чтобы программа прочитала байты счета, лучше всего использовать следующий код:
Byte [] b = новый байт [count]; ;
Этот код может гарантировать, что байты подсчета читаются, если только исключение IO не встречается в середине или в конце потока данных (EOFException)
4. Пример чтения файлов PowerPoint
Импорт java.io.InputStream; hslf .model.slide; SlideShow SS = New Slideshow (New HSLFSLIDESHOW (IS)); // IS IS INPUTSTER slides.length; i ++) {textrun [] t = slides [i] .gettextruns (); // Чтобы получить текстовое содержание слайда, создайте Textrun для (int j = 0; j <t.length; j ++ ) {content .append (t [j] .getText ()); // Здесь текстовое содержимое будет добавлено в content} content.append (slides [i] .getTitle ()); title, content .toString ());