Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > NIO вывод в консоль


Автор: gelo86 24.9.2009, 21:05
Пробою начать изучать NIO. Пишу так:

Код

    ByteBuffer outBuffer = ByteBuffer.allocate(1000000);
    WritableByteChannel wbc = Channels.newChannel(System.out);
    for (int i = 0; i < "str".length(); i++) {
        outBuffer.putChar("str".charAt(i));
    }
   wbc.write(outBuffer);


Но в консоль текст невиводится. Может кто знает почему ?

Автор: ivg 24.9.2009, 21:10
Код

outBuffer.flip();

Автор: gelo86 24.9.2009, 21:17
Савцем забил вписать, что исползую outBuffer.flip(); перед самим  wbc.write(outBuffer); но результат тотже.

Автор: can4ec 25.9.2009, 11:10
Код

        ByteBuffer outBuffer = ByteBuffer.allocate(1000000);
        WritableByteChannel wbc = Channels.newChannel(System.out);
        for (int i = 0; i < "str".length(); i++)
        {
            outBuffer.putChar("str".charAt(i));
        }
        outBuffer.rewind();
        wbc.write(outBuffer);


А почему бы так не писать?

Код

        ByteBuffer outBuffer = ByteBuffer.wrap("str".getBytes());
        WritableByteChannel wbc = Channels.newChannel(System.out);
        outBuffer.rewind();
        wbc.write(outBuffer);

Автор: gelo86 5.10.2009, 19:23
Цитата(can4ec @ 25.9.2009,  11:10)
Код

        ByteBuffer outBuffer = ByteBuffer.allocate(1000000);
        WritableByteChannel wbc = Channels.newChannel(System.out);
        for (int i = 0; i < "str".length(); i++)
        {
            outBuffer.putChar("str".charAt(i));
        }
        outBuffer.rewind();
        wbc.write(outBuffer);


А почему бы так не писать?

Код

        ByteBuffer outBuffer = ByteBuffer.wrap("str".getBytes());
        WritableByteChannel wbc = Channels.newChannel(System.out);
        outBuffer.rewind();
        wbc.write(outBuffer);



Можно и так, но почему неработает первое ?

Автор: sergioK 7.10.2009, 10:29
Цитата(gelo86 @ 5.10.2009,  19:23)
Цитата(can4ec @ 25.9.2009,  11:10)
Код

        ByteBuffer outBuffer = ByteBuffer.allocate(1000000);
        WritableByteChannel wbc = Channels.newChannel(System.out);
        for (int i = 0; i < "str".length(); i++)
        {
            outBuffer.putChar("str".charAt(i));
        }
        outBuffer.rewind();
        wbc.write(outBuffer);


А почему бы так не писать?

Код

        ByteBuffer outBuffer = ByteBuffer.wrap("str".getBytes());
        WritableByteChannel wbc = Channels.newChannel(System.out);
        outBuffer.rewind();
        wbc.write(outBuffer);



Можно и так, но почему неработает первое ?

у меня работает на консоле все видно, может у вас эксептион а кач пустой ? 

 а более кошерно будет так  smile 


 
Код

       ByteBuffer outBuffer = ByteBuffer.allocate("str".length()); // памяти кажеться что много а на самом деле не очень 
            WritableByteChannel wbc = Channels.newChannel(System.out);
            for (int i = 0; i < "str".length(); i++) 
             outBuffer.put((byte) "str".charAt(i));     // именно байт, баффер  то создан байтовый    
                                                                                                                                // мясо отдельно - молоко отдельно  :blum3 
           
    
         outBuffer.flip();            
        wbc.write((ByteBuffer) outBuffer );


или если хотим работать с чарами то 
Код

  CharBuffer charBuf =outBuffer.asCharBuffer();
  или charBuf.append("str".charAt(i));   // а потом его как либо выводить на печать 



 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)