CharBuffer.put () не работает - PullRequest
       3

CharBuffer.put () не работает

6 голосов
/ 24 января 2012

Я пытаюсь поместить несколько строк в CharBuffer с функцией CharBuffer.put() но буфер остается пустым.

мой код:

CharBuffer charBuf = CharBuffer.allocate(1000);
for (int i = 0; i < 10; i++) 
{
    String text = "testing" + i + "\n";
    charBuf.put(text);
}
System.out.println(charBuf);

Я пытался использовать clear() или rewind() после allocate(1000), но это не изменило результат.

Ответы [ 4 ]

3 голосов
/ 24 января 2012

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

CharBuffer charBuf = CharBuffer.allocate(1000);
for (int i = 0; i < 10; i++) 
{
    String text = "testing" + i + "\n";
    charBuf.put(text);
}
charBuf.flip();
System.out.println(charBuf);

Приведенное выше будет печатать только символы в буферах, а не неписаное пространство вбуфер.

3 голосов
/ 24 января 2012

Добавить вызов к rewind() вправо после цикла.

3 голосов
/ 24 января 2012

Попробуйте это:

CharBuffer charBuf = CharBuffer.allocate(1000);
for (int i = 0; i < 10; i++) 
{
    String text = "testing" + i + "\n";
    charBuf.put(text);
}
charBuf.rewind();
System.out.println(charBuf);

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

2 голосов
/ 24 января 2012

Вы должны перемотать его после того, как вы положили в объекты, попробуйте это

CharBuffer charBuf = CharBuffer.allocate(1000);
for (int i = 0; i < 10; i++) 
{
    String text = "testing" + i + "\n";
    charBuf.put(text);
}
charBuf.rewind();
System.out.println(charBuf);
...