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.