[RESOLVIDO]Verifica se o arquivo existe na pasta!

12 respostas
S

Pessoal pesquisei no forum e nenhum resolveu o meu problema
Seguinte tenho uma aplicação que roda algumas coisas em .bat, mas só posso dar continuidade nas outras coisas abaixo quando exister o arquivo de log numa determinada pasta
enqunto nao existir não desce a linha.

sei que posso usar isso para verificar

String diretorio = "C:\\diretorio\\pasta\\pasta\\arquivo.extençao";  
java.io.File file = new File(diretorio);

mas nao teria que dar um loop até ter esse aquivo e depois contuinuar?! como fazer isso!?

12 Respostas

S

Gente só quero saber se o arquivo xpto se encontra na pasta, só vai sair do loop quando achar o arquivo, como faço isso!!!?
alguem pode ajudar!?

N

snowblacksoul:
Gente só quero saber se o arquivo xpto se encontra na pasta, só vai sair do loop quando achar o arquivo, como faço isso!!!?
alguem pode ajudar!?

Oi!

Ler a documentação é importante, o File dispõe do método exists.
A única coisa é que eu aconselho a usar um Timer, tendo em vista que se ler a todo milésimo de segundo, fica complicado.

O seu código tu podes usar com a seguinte idéia:

File file = new File("xpto"); while(!file.exists()) { // Aguarde 5 segundos Thread.sleep(5000); file = new File("xpto"); }

Fica a sugestão.
Abraços.

S

Cara testei e não deu certo pois ele nao sae da
"Thread.sleep(5000); "
pois o arquivo ja esta na pasta e ele fica repetindo sem sair!!
Eu gostaria que guando o arquivo estivesse na pasta ele já ia pro proximo codigo

N

snowblacksoul:
Cara testei e não deu certo pois ele nao sae da
"Thread.sleep(5000); "
pois o arquivo ja esta na pasta e ele fica repetindo sem sair!!
Eu gostaria que guando o arquivo estivesse na pasta ele já ia pro proximo codigo

Não sei porque não funcionou ai, pois:

File file = new File("result.xml"); while(!file.exists()) { System.out.println("Aguardando 5 segundos..."); // Aguarde 5 segundos Thread.sleep(5000); file = new File("result.xml"); } System.out.println("ok");

Repetiu o “Aguardando 5 segundos” até eu lançar o arquivo no respectivo diretório.

S

Pô grande deu certinho agora, é exatamente o que eu queria valeu mesmo abraços!!
muito obrigado ajudou e muito e aprendi mais uma
valeu!!!

M

Daria para fazer um do while…
ficaria mais facil, eu acho

L
String arq= "c:\\teste.pdf";
if(!new File(arq).exists()) {
   // Crio arquivo
}
N

lucasportela:
String arq= "c:\\teste.pdf"; if(!new File(arq).exists()) { // Crio arquivo }

Não entendo porque reviver um tópico resolvido dando uma dica que não se encaixa na necessidade citada por ele.
Dessa forma, qual o intuito de esperar um determinado tempo para a leitura do diretório?

O objetivo dele é uma espécie de Timer que fique efetuando a leitura de um determinado diretório até que o arquivo seja adicionado ao mesmo.

L

Desculpe-me, entendi errado a necessidade.

L

Coloque seu código entre as tags CODE!

assim fica mais facil de entender seu código:
public class PdfParser { 

	public static void main(String[] args) { 

		PdfParser pdf = new PdfParser(); 
		pdf.setEnderecoRecurso("C:\\NNpdf\\luuuuu0001(1).pdf"); 

		String retorno = pdf.getConteudo(); 
		/* 

		 * 
		 */ 
		FileWriter x; 
		try { 
			x = new FileWriter("C:\\NNpdf\\teste.txt", false); 

			x.write(retorno); 
			x.close(); 


			FileInputStream stream = new FileInputStream("C:\\NNpdf\\teste.txt"); 

			StringBuilder txt = new StringBuilder(); 
			InputStreamReader streamReader = new InputStreamReader(stream); 
			BufferedReader reader = new BufferedReader(streamReader); 
			String line = null; 

			while ((line = reader.readLine()) != null) { 

				txt.append(line); 
				txt.append("\n"); 
				if (line.contains(" ")) { 
					txt.append(line.replaceAll(" ", ";")); 
					txt.append("\n"); 
				} 
			} 

			System.out.println(txt); 


		} catch (IOException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 

	} 

	private String enderecoRecurso; 

	public void setEnderecoRecurso(String enderecoRecurso) { 
		this.enderecoRecurso = enderecoRecurso; // endereço dos arquivos 
	} 

	public String getConteudo() { 

		File f = new File(this.enderecoRecurso); 
		FileInputStream is = null; 
		try { 
			is = new FileInputStream(f); 
		} catch (IOException e) { 
			System.out.println("ERRO: " + e.getMessage()); 
			return null; 
		} 

		PDDocument pdfDocument = null; 
		try { 
			PDFParser parser = new PDFParser(is); 
			parser.parse(); 
			pdfDocument = parser.getPDDocument(); 
			PDFTextStripper stripper = new PDFTextStripper(); 
			return stripper.getText(pdfDocument); 
		} catch (IOException e) { 
			return "ERRO: Não é possível abrir a stream" + e.getLocalizedMessage(); 
		} catch (Throwable e) { 
			// Fazemos um catch, uma vez que precisamos de fechar o recurso 
			return "ERRO: Um erro ocorreu enquanto tentava obter o conteúdo do PDF " 
			+ e.getLocalizedMessage()+" Causa "+e.getCause(); 
		} finally { 
			if (pdfDocument != null) { 
				try { 
					pdfDocument.close(); 
				} catch (IOException e) { 
					return "ERRO: Não foi possível fechar o PDF. " + e.getLocalizedMessage()+" Causa "+e.getCause(); 
				} 
			} 
		} 
	} 
}
L

Pelo o que entendi você só precisa saber como listar os arquivos de uma pasta.

File dir = new File("C:\\"); for(File arq : dir.listFiles()) { // Faz alguma coisa com o arquivo }

B

Relatei meu problema nesse topico:

da uma olhada acredito que consiga me ajudar, não tou sabendo em que parte do codigo usar essa função file, e nem como fazer rodar o procedimento junto com esta função!

Criado 5 de setembro de 2011
Ultima resposta 16 de out. de 2012
Respostas 12
Participantes 5