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?
Verificando existÊncia de arquivos
10 Respostas
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 …
}
}
Amigo, poderia me exemplificar melhor…? Sou iniciante no assunto. Agradeço 
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.
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.
//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.
No f.exists() e !f.isDirectory() coloco algum parâmetro nos parenteses?
Tenho que importar alguma biblioteca?
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
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();
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();
}
Obrigado pleas dicas… No final das contas tive que arranjar outro modo de resolver, mas obrigado mesmo assim!