Java FileChannel比其内容更大

时间:2015-01-02 17:46:28

标签: java filechannel

我正在创建一个fileChannel来执行内存映射写入。此fileChannel的大小为100个字节。我只写了80个字节。因此,当我稍后从该文件中读取时,它会向和添加5“0”。有没有办法设置大小或获取写入文件的大小?

非常感谢!!

public FileChannel create(String randomFile){
   // create file output stream
   RandomAccessFile raf;
   FileChannel fc = null;

   try {    
      raf = new RandomAccessFile(randomFile, "rw");
      fc = raf.getChannel();
      System.out.println("fc.size() "+ fc.size());      
   } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }
   return fc;
}

2 个答案:

答案 0 :(得分:2)

请改用:

final Path path = Paths.get("thefile");
final FileChannel fc = FileChannel.open(path, StandardOpenOption.WRITE,
    StandardOpenOption.READ);

// then later:

fc.truncate(80L);

当然,不要忘记.close()。理想情况下,您应该使用try-with-resources语句打开您的频道。

答案 1 :(得分:0)

我认为setLength()正是您所寻找的。 Java doc.