Delete Java File não funciona

Ao tentar deletar alguns arquivos de uma determinada pasta, o método “delete” não está realizando sua função. Segue alguns detalhes para que possam me ajudar:

  • Tenho 5 arquivos dentro da pasta, o primeiro é deletado, o segundo as vezes é , outras vezes não é, então descarto problema com permissões;

  • Tratei todos os possíveis erros de fechamento de arquivo e até mesmo do próprio delete da classe File, não obtive sucesso.
    Segue a parte do código:

    // Arquivos que iremos copiar

    File origem = new File(diretorio+arquivos[i].getName());
    File destino = new File(diretorioImportados, arquivos[i].getName());

    // abrimos os streams para leitura/escrita
    FileInputStream fis = new FileInputStream(origem);
    FileOutputStream fos = new FileOutputStream(destino);

    // Obtém os canais por onde lemos/escrevemos nos arquivos
    FileChannel inChannel = fis.getChannel();
    FileChannel outChannel = fos.getChannel();

    // copia todos o conteúdo do canal de entrada para o canal de saída
    outChannel.transferFrom(inChannel, 0, inChannel.size());
    try{
    fis.close();
    }catch (Exception e) {
    e.printStackTrace();
    }
    try{
    fos.close();
    }catch (Exception e) {
    e.printStackTrace();
    }
    try{
    inChannel.close();
    }catch (Exception e) {
    e.printStackTrace();
    }
    try{
    outChannel.close();
    }catch (Exception e) {
    e.printStackTrace();
    }
    File relatorioPDF = new File(parCaminhoPDF+relatorio+".pdf");
    relatorioPDF.renameTo(new File(“novonome.pdf”));
    arquivos[i].delete();

Obrigado

em java não passei por esse problema. porem em delphi já vi isso acontecer inclusive o retorno da função delete diz que foi deletado, porem ao ir na pasta o arquivo ainda esta la.

detalho que isso acontece sempre em windows 10.

Com o JAVA ele retorna falso. Forcei num while e mesmo assim ele não deletou. Estou usando o win10 tbm…

O motivo por deletar as vezes sim e as vezes não, creio que seja porque o processo está aberto, já passei por isso, e solução criativa que eu tive foi.

String temp;

while(true)
{
	Path source = Paths.get(temp);
	try 
	{
		Files.delete(source); // tenta deletar
		break;  // se deletar, sai do laço
	} 
	catch (IOException ex) 
	{
		//se não deletar por causa do processo, cai no catch.
		//mas continua tentando devido ao laço
		if(ex.toString().contains("java.nio.file.NoSuchFileException")){
			break;  //somente se a exceção for de arquivo inexistente é que ele sai
		//pois finalmente o arquivo foi deletado.
		}
	}
}