Я действительно разочарован обсуждением аналогичной проблемы с удалением java 6 и невозможностью найти решение на этих похожих сообщениях при удалении Flie Post1 и Post2.Удаление файла Java 6 с помощью RandomAccessFile
Я работаю над приложением, которое загружает файл с FTP-сервера. Эта загрузка достигается путем получения потока, чтения из этого потока и записи его в файл RandomAccessFile
. В случае коррумпированных загрузок я хочу удалить файл на диске.
Я не могу удалить файл вручную или через приложение. Очень очевидно, что у какого-либо обработчика файла есть блокировка для файла, из-за которого удаление файла является ошибкой. Однако я не могу понять, какие файловые обработчики обладают файловой блокировкой, поскольку я убедился, что я закрываю все файлы и объекты потока.
Наконец, фрагмент кода
public class OprDownload extends Observable implements Runnable
{
public void run()
{
//Code to connect to ftp,obtain the stream and write to a file
if (download complete)
{
if(mwwObjFile!=null)
{
mwwObjFile.close();
}
if(stream!=null)
{
stream.close();
}
if(compareChecksum())//If checksum match success
{
updateDownloadDetails();
cwwIntStatus = COMPLETE;
}
else
{
cwwIntStatus = CHECKSUM_FAIL;
deleteCorruptUpdateFromDownloadsFolder();
}
}
}
public void deleteCorruptUpdateFromDownloadsFolder()
{
String fileOndisk = "FileName";
File mwwFileToBeDeleted = new File(fileOndisk);
if(mwwFileToBeDeleted .exists())
{
System.out.println("File Deleted"+mwwFileToBeDeleted .delete());
}
}
}
Ваш код контрольной суммы для сравнения читается из файла? Если да, закрывает ли он все потоки? –
Bingo !! Хорошо, я не могу поверить, что я не закрыл файловые объекты в коде контрольной суммы сравнения. Спасибо – shabeena