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 ответа

Решение

Используйте это вместо:

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.

Я думаю setLength() это то, что вы ищете. Java док.

Другие вопросы по тегам