Java: BufferedReader читает больше, чем строка?

Вы хотите присвоить что-то вроде этого onfocus:

if (this.value == this.defaultValue)
    this.value = ''
this.className = ''

и это к onblur:

if (this.value == '')
    this.value = this.defaultValue
this.className = 'placeholder'

(Можно использовать что-то немного более умное, как функция платформы, чтобы сделать переключение имени класса, если Вы хотите.)

С некоторым CSS как это:

input.placeholder{
    color: gray;
    font-style: italic;
}
5
задан Martijn Courteaux 2 December 2009 в 18:55
поделиться

4 ответа

DataInputStream, скорее всего, то, что вы хотите использовать. Также не используйте метод available (), поскольку он обычно бесполезен.

1
ответ дан 14 December 2019 в 19:16
поделиться

Я не уверен, что следил за вашим объяснением.

Однако да - у вас нет реального контроля над тем, сколько на самом деле будет читать BufferedReader. Суть такого считывателя в том, что он оптимистично считывает фрагменты базового ресурса по мере необходимости для пополнения своего буфера. Поэтому, когда вы впервые вызываете readLine , он увидит, что в его внутреннем буфере недостаточно для обслуживания вашего запроса, и отключится и прочитает сколько байтов, сколько ему кажется, в свой буфер ] из основного источника, что, как правило, будет намного больше, чем вы просили. После того, как буфер заполнен, он возвращает вашу строку из буферизованного содержимого.

Таким образом, после того, как вы обернули входной поток в BufferedReader, вы должны быть уверены, что читаете этот поток только через тот же буферизованный считыватель.

4
ответ дан 14 December 2019 в 19:16
поделиться

BufferedReader предполагает, что это единственное чтение из базового входного потока.

Его цель - минимизировать количество чтений из базового потока (что дорого, поскольку они могут делегировать довольно глубоко). Для этого он хранит буфер, который заполняется, считывая в него как можно больше байтов за один вызов базового потока.

Так что да, ваш диагноз точен.

0
ответ дан 14 December 2019 в 19:16
поделиться

Здесь просто дикий удар - 40000 - это 1001110001000000 в двоичном формате. Итак, первые семь битов - это 1001110, то есть 78. Это означает, что вы пишете 2 байта информации, но читаете семь бит.

0
ответ дан 14 December 2019 в 19:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: