Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Удалить байты из файла


Автор: Royan 2.9.2008, 15:09
Всем привет! На днях поймал себя на мысли, что я не знаю как удалить байты из файла без пересоздания всего файла.

Пример, записал я 100 байт в какой-то файл

Код

out.write(new byte[100]);


А теперь хочу удалить последний байт из файла, так, чтобы его физический размер стал равным 99 байтам, но как это сделать, чтобы не удалять весь файл, чтобы потом заново не зафигачивать бывшие до того там байты??? 

Автор: serious 3.9.2008, 16:59
При помощи Java NIO (cсамый простой вариант):

Код

FileOutputStream outputStream = null;
try {
    File outputFile = new File("с:\\test.txt");
    outputStream = new FileOutputStream(outputFile, true);

    FileChannel outputChannel = outputStream.getChannel();
    outputChannel.truncate(outputChannel.size() - 1);
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (outputStream != null) {
        try {
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Надо еще добавить проверку на нулевую длину файла, иначе вылетит java.lang.IllegalArgumentException.

Автор: Royan 3.9.2008, 18:29
serious, Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)