Problema apagar ficheiro

5 respostas
O

Boas!

Tenho uma dúvida básica, mas não percebo por que acontece.
Tenho um ficheiro .dat onde escrevo uma string e mando esse ficheiro por ftp.
Depois queria apagar esse ficheiro.

File file = new File("C:\teste.dat");   
    FileWriter filewriter = new FileWriter(file);
    BufferedWriter out = new BufferedWriter(filewriter);
    out.write("isto é um teste");
    out.close();
    filewriter.close();

 //aqui chamo a minha funcao para mandar o ficheiro por ftp, que funciona direito
  funcoes.ftp();

//e aqui começa o problema, deveria poder apagar o file
file.delete();

O ficheiro nunca é apagado. :shock:
Fiz umas pesquisas e encontrei :

System.gc();

E realmente com a chamada ao garbage collector o ficheiro é apagado.
Estou a fazer algo de errado para nao conseguir apagar o ficheiro?
Isto de chamar o gc aqui é válido?posso utilizá-lo ?

Desde já agradeço :slight_smile:

5 Respostas

joseinfo

Na minha opnião, o problema de usar o System.gc() é que vc não pode ter certeza que o GC vai passar nessa chamada. Nesta chamada vc só pede pra ele passar, mas o GC “só passa se decidir passar”.

C

Tente fazer isto.

File file = new File("C:\teste.dat"); FileWriter filewriter = new FileWriter(file); BufferedWriter out = new BufferedWriter(filewriter); out.flush(); out.write("isto é um teste"); out.close(); filewriter.flush(); filewriter.close();

** O uso do flush pelo que eu me lembro limpa as referencias da memória ou algo assim…

resolveu?

silva.fernandes

Nesse caso vc precisa encerrar fechar as conexões:

FileWriter filewriter = newFileWriter(file); BufferedWriter out = newBufferedWriter(filewriter);

Só assim o arquivo poderá ser apagado

T +

:wink:

O

Antes tudo muito obrigado pelas respostas :wink:

joseinfo, realmente o gc pode ou nao passar. De qq maneira é a unica forma que consegui de apagar o ficheiro. Haverá alguma maneira de o obrigar mesmo a passar? :shock:

Corvao, tentei o flush mas ele gera-me uma excepção .java.io.IOEXCEPTION:Stream closed, e não apaga o ficheiro.

silva.fernandes, eu encerro as conexoes:
é isto não? out.close(); filewriter.close();

Mais uma vez obrigado pela vossa disponibilidade

joseinfo

Particularmente eu acho q não tem como obrigar ele passar não… só “pedir por favor” e se ele resolver hehe

Criado 17 de setembro de 2007
Ultima resposta 24 de set. de 2007
Respostas 5
Participantes 4