Verificando existÊncia de arquivos

10 respostas Resolvido
java
F

No código que estou criando, uso arquivos .txt para armazenar os valores das minhas variáveis e depois retoma-los. Porém, ao executar o programa pela primeira vez, o código responsável por recuperar os valores dos arquivos .txt é executado, mas os arquivos .txt ainda não existem, serão criados posteriormente… Há alguma forma de verificar a existência desses arquivos?

10 Respostas

D

Olá amigo não sou muito expert em java mas acho que é algo do tipo:

FILE f = new File(filePathString);
//aqui você pergunta se o arquivo existe
if( f.exists() ){
//seu código …
if ( !f.isDirectory()) { //se existir se é um diretório
//seu código …
}
else{ //caso não seja um diretório
//seu código …
}
}

F

Amigo, poderia me exemplificar melhor…? Sou iniciante no assunto. Agradeço :wink:

D

Faz o seguinte posta o seu código que fica mais fácil de te exemplificar não esquece de utilizar as tags de código ok.

F

Estou usando código para ler os dados do meu .txt:

Scanner scanner1 = new Scanner(new FileReader("C:\\FluxoCaixa\\si.txt")).useDelimiter("\\n");
for(cont1=0;cont1<13;cont1++) {
    si[cont1] = scanner1.next();
 }    

 Scanner scanner2 = new Scanner(new FileReader("C:\\FluxoCaixa\\pag.txt")).useDelimiter("\\n");
 for(cont1=0;cont1<13;cont1++) {
     pag[cont1] = scanner2.next();
 }

Porém, os arquivos si.txt e pag.txt só serão criado no final do meu código, portanto ainda não existem. Eu teria que colocar o trecho do código acima dentro de um condicional que verificasse a existência de ambos os arquivos: SE os arquivos existem, executa o código acima.

D
//aqui você pergunta se o arquivo existe if( f.exists() ){ if ( !f.isDirectory()) { //se existir se é um diretório }else{ //caso seu arquivo exista é não seja um diretório
Scanner scanner1 = new Scanner(new FileReader("C:\\FluxoCaixa\\si.txt")).useDelimiter("\\n");
for(cont1=0;cont1<13;cont1++) {
si[cont1] = scanner1.next();
 }
Scanner scanner2 = new Scanner(new FileReader(C:\FluxoCaixa\pag.txt)).useDelimiter("\n");

for(cont1=0;cont1<13;cont1++) {

pag[cont1] = scanner2.next();

}

}

}else{ \ caso nao exista

if( f.isDirectory() ){

}else{ //caso não seja um diretório

//Ex: cria o arquivo

}

}

Mas acho interessante você fazer essa verificação na criação do arquivo tipo se existe você lê o arquivo e faz as modificações necessárias se não existe você cria o arquivo.

F

No f.exists() e !f.isDirectory() coloco algum parâmetro nos parenteses?
Tenho que importar alguma biblioteca?

D

vc usa como importação:

import java.io.File;

vamos supor que você fez assim para criar os arquivo porque eu não vi essa parte do se código:

FILE si = new FILE(“C:\FluxoCaixa\si.txt”) vc criou o arquivo si assim
FILE pag = new FILE(“C:\FluxoCaixa\pag.txt”)vc criou o arquivo pag assim

aqui voce verifica se os dois existem e se são diretórios:

if(si.exists() && pag.exists()){}
if(si.isDirectory() && pag.isDirectory()){}

Obs: o ! antes de significa negação se eu te mandei assim tire-o

F

Eu criei os arquivos com o seguinte código:

FileWriter arq1 = new FileWriter("C:\\FluxoCaixa\\si.txt");
PrintWriter gravarArq1 = new PrintWriter(arq1);
   for(cont1=0;cont1<13;cont1++){
      gravarArq1.printf("%s %n",si[cont1]);}
 arq1.close();
        
  FileWriter arq2 = new FileWriter("C:\\FluxoCaixa\\pag.txt");
  PrintWriter gravarArq2 = new PrintWriter(arq2);
     for(cont1=0;cont1<13;cont1++){
        gravarArq2.printf("%s %n",pag[cont1]);}
  arq2.close();
D
Solucao aceita

creio que seja mais ou menos isso que você quer.
1º ele verifica se o arquivo existe e se é um diretório se for verdadeiro ele lê o arquivo
2º a verificação resultou em negativa ai ele cria o arquivo.

FileWriter arq1, arq2; if(arq1.exists() && arq2.exists() && !arq1.isDirectory() && !arq2.isDirectory()){ Scanner scanner1 = new Scanner(new FileReader("C:\\FluxoCaixa\\si.txt")).useDelimiter("\\n"); for(cont1=0;cont1<13;cont1++) { si[cont1] = scanner1.next(); }
Scanner scanner2 = new Scanner(new FileReader(C:\FluxoCaixa\pag.txt)).useDelimiter("\n");

for(cont1=0;cont1<13;cont1++) {

pag[cont1] = scanner2.next();

}

else{

FileWriter arq1 = new FileWriter(C:\FluxoCaixa\si.txt);

PrintWriter gravarArq1 = new PrintWriter(arq1);

for(cont1=0;cont1<13;cont1++){

gravarArq1.printf("%s %n",si[cont1]);

}

arq1.close();
FileWriter arq2 = new FileWriter(C:\FluxoCaixa\pag.txt);

PrintWriter gravarArq2 = new PrintWriter(arq2);

for(cont1=0;cont1<13;cont1++){

gravarArq2.printf("%s %n",pag[cont1]);

}

arq2.close();

}
F

Obrigado pleas dicas… No final das contas tive que arranjar outro modo de resolver, mas obrigado mesmo assim!

Criado 9 de janeiro de 2016
Ultima resposta 14 de jan. de 2016
Respostas 10
Participantes 2