Снять блокировку файлов Java в Windows

У меня проблемы с удалением файла в Windows с помощью java. По какой-то причине java блокирует мой файл, и я не знаю почему. Вот мой код:

private byte[] getFileByteArray(File file) {
    try {
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        try {

            ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
            byte[] bt = new byte[buffer.remaining()];
            buffer.get(bt);
            channel.close();
            raf.close();
            file.delete();
            return bt;

        } catch (Exception ex) {
            //Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.toString());
        }

    } catch (FileNotFoundException ex) {
        Logger.getLogger(ConnectionImpl.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

file.delete (), а также попытка вручную в проводнике отказывается удалить файл, поскольку он все еще используется. Хотя в Linux все хорошо.

Я где-то пропустил close ()? Я могу подтвердить, что метод, который создает файл в первую очередь, закрывает файл, так как я могу удалить файл перед запуском вышеуказанного кода с помощью file.delete ()

Дополнительная информация: Приведенный выше код является частью метода getFileByteArray (файл файла), который вызывается следующим образом:

public byte[] createReport(int id) {

    Report report = new Report();
    String filename = report.CreateReport(id);
    return getFileByteArray(new File(filename));
}

Спасибо

Обновление: Мне удалось исправить проблему, прочитав файл килобайт за килобайтом в массив байтов с помощью ByteArrayOutputStream

Как упоминалось ниже, в Java есть известная ошибка, заключающаяся в том, что в Windows возникают проблемы с отображением файлов.

12
задан jtnire 14 November 2010 в 20:43
поделиться