Apache Commons VFS - Как установить размер файла ...? - PullRequest
4 голосов
/ 18 июля 2011

Я не могу найти какой-либо метод в FileObject или FileContent, который позволил бы мне установить новый размер для существующего файла.

FileContent.getSize() не имеет соответствующего setSize(). У RandomAccessContent есть некоторые комментарии о поиске, но в нем не говорится, что файл будет уменьшен, если кто-то ищет где-то до конца, а затем просто закрывает файл.

/**
 * Sets the file-pointer offset, measured from the beginning of this
 * file, at which the next read or write occurs.  The offset may be
 * set beyond the end of the file. Setting the offset beyond the end
 * of the file does not change the file length.  The file length will
 * change only by writing after the offset has been set beyond the end
 * of the file.
 * <br/>
 * <b>Notice: If you use {@link #getInputStream()} you have to reget the InputStream after calling {@link #seek(long)}</b>
 *
 * @param pos the offset position, measured in bytes from the
 *            beginning of the file, at which to set the file
 *            pointer.
 * @throws IOException if <code>pos</code> is less than
 *                     <code>0</code> or if an I/O error occurs.
 */
public void seek(long pos) throws IOException;

Ответы [ 2 ]

0 голосов
/ 21 ноября 2016

Если вы хотите установить размер с помощью setSize(int size), он установит размер в некоторых API, но может произойти некоторая потеря данных, если size меньше file.getSize().

Некоторые API будутпо-прежнему позволяют обрезать файл, установив размер 0, что означает, что содержимое удаляется.На самом деле это не установка свойства размера, а удаление данных, а затем обновление свойства размера.

Чтобы избежать такой путаницы, этот API удалил метод setSize(int size).

Но вы можетепо-прежнему устанавливайте размер косвенно, добавляя или удаляя содержимое в или из файлового объекта, используя ссылку outputStream.

0 голосов
/ 20 мая 2012

используя общедоступные API, вы не можете установить размер или обрезать любой файл.Однако некоторые специализированные типы предлагают метод, который можно использовать.Тем не менее, этот метод также может быть не публичным, требующим неприятных размышлений.

...