2014-09-25 53 views
0

我尝试了以下方法,但似乎有些问题。如何使用filechannel和bytebuffer将double写入文件?

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

那么,“什么是错”?对于(int i = 0; i <16; i ++){ – user2864740 2014-09-25 01:49:24

回答

1

你需要写它之前flip()缓冲区,compact()它之后,如果你循环。

+0

buf.putDouble(i * 8,Math.sqrt(i)); } buf.compact(); buf.flip(); fc.write(buf); fc.close();你是这个意思吗?但它不起作用。 – iDohko 2014-09-25 03:24:47

+0

不,我不是那个意思。我说'在写入之前'翻转()'缓冲区',之后'压缩()'。 – EJP 2014-11-25 20:43:14

相关问题