2014-09-25 2 views
0

Я пытаюсь использовать следующие методы, но кажется, что-то не так.Как написать double в файл, используя filechannel и bytebuffer?

File f=new File("D:\\aa.txt"); 
    FileOutputStream fos =new FileOutputStream(f); 
    FileChannel fc=fos.getChannel(); 
    ByteBuffer buf=ByteBuffer.allocate(128); 
    for (int i=0;i<16;i++) { 
     buf.putDouble(i*8,Math.sqrt(i));    
    } 
    fc.write(buf); 
    fc.close(); 
+3

Ну, «что не так»? – user2864740

ответ

1

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

+0

для (int i = 0; i <16; i ++) { buf.putDouble (i * 8, Math.sqrt (i)); } buf.compact(); buf.flip(); fc.write (buf); fc.close(); Вы так называете? но это не сработает. – iDohko

+0

Нет, я не имею в виду. Я сказал '' flip() 'буфер перед его записью и' compact() 'it afterwards '. – EJP

Смежные вопросы