Fechar um objeto instanciado

bom dia a todos!!!
pessoal, seguinte…eu abro um jframe que me gera um txt . após isso, quando clico num botão, ele executa uma leitura num txt…beleza…aí, tenho um outro botão que apaga esse txt, que tbm tá funcionando certo…só que ele só funciona enquanto o método de leitura não for executado…se for executado, ele não faz nada…esse método fica aberto, impedindo o segundo, ou algo do genero???
bom, vamos lá… o conteudo do txt é “87”, quando executo o metodo de leitura a ação é a seguinte

[code] String teste = null;
try{
File file = new File(“sistema/info.txt”);
FileInputStream f = new FileInputStream(file);
Scanner Scan = new Scanner(f);

                              while(Scan.hasNext())
                                  {
                                  teste = Scan.next();
                                  info.setText(""+teste);
                                  }
                            
       }
      catch(Exception e){
          JOptionPane.showMessageDialog(rootPane, "erro!!não existe o tal arquivo!");
          dispose();
      } 
    
       [/code]

já o segundo método, que só funciona se o primeiro não executar é o seguinte

Txt T = new Txt(); if(T.DeletaArquivoTxt()) { info.setText(""); JOptionPane.showMessageDialog(rootPane, "arquivo deletado"); dispose(); }

enfim, tem algo a ver isso do metodo que le o txt ficar pendurado???
como resolvo isso???
Obrigado a todos!!!
Horácio

Como o arquivo está em uso, ele não permite que você faça alterações, é como se estivesse protegido.
Uma outra coisa, cadê o bloco finally com os closed ? Você instanciou um FileInputStream mas não fechou ele após o uso, ele vai permanecer em memória até a JVM decidir que o mesmo deve ser removido.

eu fiz assim, aparentemente funcionou, fechei o scan, que era a parte que lia o texto, tá correto pensar que o scan é a ponta do processo de leitura, aí, fechando ela, também fecho as demais??? digo isso, porque parece que deu certo, ou é pelo fato do Scan segurar o arquivo impedindo que eu o deletasse???
o que é mais correto pensar nesse caso???
olha só como eu fiz:

[code] File file = new File(“sistema/info.txt”);
String teste = null;
try{

                  FileInputStream f = new FileInputStream(file);
                  Scanner Scan = new Scanner(f);

                              while(Scan.hasNext())
                                  {
                                  teste = Scan.next();
                                  info.setText(""+teste);
                                  }
                    Scan.close();   
       }
      catch(Exception e){
          JOptionPane.showMessageDialog(rootPane, "erro!!não existe o tal arquivo!");
          dispose();
      } [/code]

de resto, muito obrigado pela atenção, Nel!!! grande abraço!!!
ah, galera do forum…agradeço a vocês tbm pela constante ajuda sempre que posto alguma dúvida!! muito obrigado mesmo, pessoal!!!
Horácio

Evite dar nomes de variáveis que iniciem com letra maiúscula. Sobre o seu código, você deixou em aberto o FileInputStream. Funcionou, mas pode em algum momento não funcionar, pois o FileInputStream mantém o arquivo em aberto, sem a garantia de que o mesmo será fechado antes de você executar alguma ação, então, faça as seguintes modificações:

[code]File file = new File(“sistema/info.txt”);
String teste = null;
FileInputStream fis = null;
Scanner scan = null;
try{

            fis = new FileInputStream(file);  
            scan = new Scanner(fis);  

                        while(scan.hasNext())  { 
                            teste = Scan.next();  
                            info.setText(""+teste);  
                        }  
 } catch(Exception e){  
    JOptionPane.showMessageDialog(rootPane, "erro!!não existe o tal arquivo!");  
    dispose();  
} finally {
    if (null != fis)
        fis.close();
    if (null != scan)
        fis.close();
}   

[/code]

Assim, garante que depois de toda a execução do seu método, serão fechados e evitando possíveis erros.