Abrir arquivos

6 respostas
java
A

Tenho 2 arquivos em pdf na minha pasta e a minha variável texto só esta me retornando o conteúdo de 1 arquivo, já tentei colocar em uma lista e mesmo assim só me retorna um conteúdo… alguém pode me ajudar a retornar o conteúdo de todos os arquivos da minha pasta?

String novo = null;
            public String pdfLeitor() {
	File arquivos = null;
	File file = new File("C:\\Users\\Ruben\\Desktop\\teste\\");
	File afile[] = file.listFiles();
	int i = 0;
		for (int j = afile.length; i < j; i++) {
		arquivos = afile[i];
		novo = String.valueOf(arquivos);
	}
	try {
		PdfReader reader = new PdfReader(novo);
		String texto = PdfTextExtractor.getTextFromPage(reader, 1);
		
	} catch (IOException e) {
		e.getStackTrace();
	}
	return texto;
}

6 Respostas

stilovl
arruma isso

for(int i = 0 ; i < afile.length; i++){

arquivos = afile[i];

novo = String.valueOf(arquivos);

aqui vc deveria salvar o valor de novo em algum lugar, se não,  proxima execução do laço o valor de novo será alterado. Por exemplo, na primeira execução do laço, o valor de novo é X, como a condição do laço ainda não retorna true (i ainda é menor que afile.length) ele vai iniciar o laço novamente, agora novo que valia X tem seu valor substituido por Y e o valor de X é perdido, após isso a condição do laço retorna true e sai do laço, dai faz a leitura somente de um arquivo. Um solução seria criar um Array de Strings[] e passar o mesmo indice de afile para esse array, assim salvando todos os novo, um em cada indice, e quando for fazer a leitura dos dados criar um laço for e passar todos os indices.
A

@stilovl esta dando erro…

for(int i = 0 ; i < afile.length; i++){
		arquivos = afile[i];
		String[] string = afile;
		novo = String.valueOf(arquivos);
	}

tentei dessa forma e não vai também…

File[] string;
        public String pdfLeitor() {
	File arquivos = null;
	File file = new File("C:\\Users\\Ruben\\Desktop\\teste\\");
	File afile[] = file.listFiles();
	
	for(int i = 0 ; i < afile.length; i++){
		arquivos = afile[i];
		string = afile;
		novo = String.valueOf(string);
	}
A

@stilovl consegue me ajudar?

stilovl
String[] string = new String[afile.length];

for(int i = 0 ; i < afile.length; i++){

string[i] = afile[i].toString();

}

assim vc vai receber um diretorio em cada indice do array de strings, só não sei se seu codigo inteiro vai funcionar, não testei aqui.

A

@stilovl fiz dessa forma e ele continua me retornando só um conteúdo, aonde errei?

public String pdfLeitor() {
	String[] string = null;
	String arquivos = null;
	File file = new File("C:\\Users\\Ruben\\Desktop\\teste\\");
	File afile[] = file.listFiles();
	for (int i = 0; i < afile.length; i++) {
		string = new String[afile.length];
		string[i] = afile[i].toString();
		arquivos = string[i];
	}
	String texto = null;
	for (int i = 0; i < afile.length; i++) {
		try {
			PdfReader reader = new PdfReader(arquivos);
			texto = PdfTextExtractor.getTextFromPage(reader, 1);
		} catch (IOException e) {
			e.getStackTrace();
		}
	}
	return texto;
}
stilovl
String[] string = new String[afile.length];

for(int i = 0 ; i < afile.length; i++){

string[i] = afile[i].toString();

}

Faça dessa forma, inicie o array de string fora do laço for, e não precisa passar a esse arquivos = string[i] não, dentro do segundo for vc passa PdfReader reader = new PdfReader(string[i]);
Criado 16 de março de 2020
Ultima resposta 18 de mar. de 2020
Respostas 6
Participantes 2