Manipulação de arquivos

3 respostas
Jedi_FeniX

Eu tenho uma classe que abre um arquivo e lê o seus dados, até ai tudo bem…
Se eu abrir um documento com esta classe e no meio da operação apagar o documento, que é um txt, o aplicativo ainda continua lendo o mesmo e trazendo os dados, por que?
Sendo que quando eu abro o documento, eu deixo o “link” em memória, seria esta a causa?
Para abrir o documento eu uso a classe java.io.RandomAccessFile

3 Respostas

giovaniufop

será que você pode colar seu código, somente a parte em que você lê o arquivo?

Algumas classes como a BufferedReader por exemplo lê pedaços relativamente grandes de dados retirados do arquivo de uma só vez e mantêm esses dados em buffer, talvez por isso vc ainda possa estar lendo informações do arquivos.

MAS, antes de tirar qualquer conclusão gostaria de ver seu código.

Jedi_FeniX

Blz, abaixo segue a parte do código que abre o arquivo e lê os dados.

File file = new File(Importer.PATH_FILE_READ + this.properties.getProperty("nameFile"));
                        if(file.exists()){
                                RandomAccessFile fromFile = new RandomAccessFile(file, "r");
                                if(fromFile.getFilePointer() < Long.valueOf(this.properties.getProperty("pointer"))){
                                                this.properties.setProperty("pointer", "0");
                                }
                                //Importer.LOGGER.info("OPEN FILE OF READ");
                                for(;;){
                                        //RandomAccessFile fromFile = new RandomAccessFile(file, "r");
                                        /*if(fromFile.getFilePointer() < Long.valueOf(this.properties.getProperty("pointer"))){
                                                this.properties.setProperty("pointer", "0");
                                        }*/
                                        fromFile.seek(Long.valueOf(this.properties.getProperty("pointer")));
                                        //Insere os dados do arquivo moqueuexxxxx.txt no banco
                                        try{
                                                for(String temp = null; (temp = fromFile.readLine()) != null; ){
                                                        this.properties.setProperty("pointer", String.valueOf(fromFile.getFilePointer()));
                                                        this.updateFileConf();
                                                        Importer.LOGGER.debug("UPDATE POINTER OF FILE CONTROL");
                                                        if(this.checkMo(temp)){
                                                                this.dao.insert(this.transformDataToMoQueue(temp));
                                                                Importer.LOGGER.info("MoQueue INSERTED WITH SUCESS");
                                                        } else{
                                                                Importer.LOGGER.info("NOT INSERT: " + temp);
                                                         }
                                                }
                                       ....

Ve se ajuda, senão, coloco toda a classe…

giovaniufop

karamba, que zona hahaha.
Kra não consegui ver nem onde vc apagou o arquivo, sugiro que você tente simplificar sua classe rs

No mais, de uma olhada na API das classes que você está usando: http://java.sun.com/javase/6/docs/api/

talvez ajude

flw

Criado 17 de março de 2008
Ultima resposta 17 de mar. de 2008
Respostas 3
Participantes 2