Fechar streams de um arquivo sem ter referência a elas

Pessoal, é possível com em java puro, fechar todas as streams de um arquivo sem ter referência a elas, para garantir que eu consiga mover um arquivo?

Talvez, mas vai precisar de muita macumba. Muita em “todos seus cabelos vão ficar brancos, fracos e cair”.

Rubem,

interessante sua dúvida cara! Será que a jdk provê algum mecanismo de controle que possibilite descobrir quais objetos estão com os streams abertos ? Seria análagos a Threads ,que eu sei que tem uma API do java que gerencia as Threads, possibilitanto até verificar se existe deadlocks e tal, mas com arquivos, eu nunca vi. Se eu conseguir encontrar alguma coisa no google eu posto aqui.

Então, o Groovy não tem um esquema de percorrer todos os objetos na memória da JVM? Como que faz isso?

Pelo jeito esqueceram do metodo close() por ai neh. :lol:

]['s

Que eu saiba ele não tem não, mesmo pq isso é basicamente impossivel de implementar.

Me ocorreu uma coisa, com AOP você poderia resolver isso de forma até que razoavel. Você precisa que todos os handler abertos pela mesma JVM sejam fechados ou incluindo o de programas externos?

Existe uma “solução” (muitas aspas) que eu já usei e funcionou, que é alocar muitos objetos, forçar um full gc via system.gc e finalmente mandar executar todos finalizers.

Pelo jeito esqueceram do metodo close() por ai neh. :lol:

]['s[/quote]
pois é, ele iria chamar o close, mas o problema é que ele não sabe de quem chamar … hehehehe

Que eu saiba ele não tem não, mesmo pq isso é basicamente impossivel de implementar.

Me ocorreu uma coisa, com AOP você poderia resolver isso de forma até que razoavel. Você precisa que todos os handler abertos pela mesma JVM sejam fechados ou incluindo o de programas externos?

Existe uma “solução” (muitas aspas) que eu já usei e funcionou, que é alocar muitos objetos, forçar um full gc via system.gc e finalmente mandar executar todos finalizers.[/quote]
mas isso não é 100% garantido, dependendo do tipo de sistema, não sendo tempo real e crítico, pode até ser, mas uma solução mais factível seria percorrer o heap de objetos do java e fazer algumas ‘gambis’ pra tentar descobrir os objetos abertos que não estão sendo utilizados e fechá-los, mas isso é bem complicadinho pra fazer na mão …

Implementando um ClassLoader no braço não seria possível não?