Duvidas com arquivos .TXT

10 respostas
L

[b]Ola gostaria de saber se tem algum comando no Java com o qual eu possa ler todos os arquivos .TXT de um diretorio ?

por exemplo tenho que procurar em todos os arquivos .txt de uma pasta uma palavra especifica, sei como buscar em um arquivo especifico ,mas tenho que olhar em todos, gostaria de uma ajuda, pois no CMD tem um comando curinga *.txt que busca todos os arquivos com essa extensao ,existe algo similar no java tanto para arquivos como para diretorios?[/b]

10 Respostas

B

Boa tarde,

Irá adicionar arquivos com a final .txt em uma lista de String.

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class BuscarTxt {
   
	public static List<String> buscarTxt(String path){
		List<String> paths=new ArrayList<String>();
		File file=new File(path);
		
		for(String strPath:file.list()){
			if(strPath.endsWith(".txt")){
			    paths.add(strPath);
			}
		}
		return paths;
	}
	
	public static void main(String[] args) {
		List<String> paths=buscarTxt("C://");
		
		System.out.println(paths);
	}
}
B

Poderia ter usado regex ou classe Scanner, mas está melhor assim , fica mais limpo o código

L

Senao for pedir demais tem como me mostrar com a classe Scanner ?

L

A primeira coisa, vc sabe o que é um programa em java? Como compilar e executar?

Sabe também como ler os arquivos do diretorio?

A galera ta vindo no forum pedindo codigo pronto pra entregar para o professor.

Vc procurou no forum como ler arquivos de um diretorio, primeiro?

L

antes de voce vir aqui e falar merda ,deveria prestar mais atençao nao to pedindo pra me entregar codigo pronto nao ,porque como ja havia dito consigo ler um arquivo queria saber como ler mais de um ;

e fiquei curioso com aplicaçao com a classe Scanner .

L

Excelente kra.

Então posta o código que vc ja tem. E a galera vai te ajudando.

Pode ser?

L
Preciso de ajuda nesse codigo aqui nao cosigo arrumar uma condiçao para fazer a busca de uma string especifica em todos sub diretorios de uma pasta ,porem consigo buscar a ocorrencia dessa string em uma pasta especifica da uma olhada no codigo abaixo .
package Lista;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class BuscaString {

    public static void buscarString(String caminho, String palavra) throws IOException {
        caminho += "\\";
        File file = new File(caminho);

        for (String indice : file.list()) {
            if (indice.endsWith(".txt")) {
                FileReader fileReader = new FileReader(caminho + indice);
                BufferedReader buffer = new BufferedReader(fileReader);
                String linha = null;
                do {
                    linha = buffer.readLine();
                    if (linha != null) {
                        if (linha.indexOf(palavra) >= 0) {
                            System.out.println("A palavra foi encontrada :" + linha);
                            System.out.println("No diretorio :" + indice);
                        }

                    }
                } while (linha != null);



                buffer.close();
            }

        }
    }

    public static void BuscaSubPasta(File caminhoInicio, int indice) throws IOException {
        indice += indice;
        if (caminhoInicio.exists()) {
            File[] diretorios = caminhoInicio.listFiles();
            for (int i = 0; i < diretorios.length; i++) {

               
                if (diretorios[i].isDirectory()) {
                    BuscaSubPasta(diretorios[i], indice + 1);
                } else {
                    char[] arquivo = new char[indice];
                    for (int j = 0; j < indice; j++) {
                        arquivo[j] = ' ';
                    }
                    System.out.println(new String(arquivo) + diretorios[i].getName());
                }
            }
        }
    }

    public static void main(String[] args) throws IOException {

        BuscaSubPasta(new File("B:\\lista\\"),0);
//       buscarString("B:\\lista\\", "rafael");

    }
}
L
package teste;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class BuscaTxt {

	public static void buscarString(String arquivo, String palavra) throws IOException {
		
		File file = new File(arquivo);

		if (arquivo.endsWith(".txt")) {
			FileReader fileReader = new FileReader(file);
			BufferedReader buffer = new BufferedReader(fileReader);
			String linha = null;
			do {
				linha = buffer.readLine();
				if (linha != null) {
					if (linha.indexOf(palavra) >= 0) {
						System.out.println("A palavra " + palavra + " foi encontrada: " + linha);
						System.out.println("No arquivo:" + arquivo);
						System.out.println();
					}
				}
			} while (linha != null);

			buffer.close();
		}
	}

	public static void busca(String caminho, String palavra) throws IOException{
		File file = new File(caminho);

		for (String indice : file.list()) {
			File f = new File(caminho + indice);
			if (f.isDirectory()){
				busca(f.getPath() + "\\", palavra);
			}
			else {
				buscarString(f.getPath(), palavra);
			}
		}
	}

	public static void main(String[] args) {
		try {
			busca("D:\\PastaJava\\", "teste");
		} catch (IOException e) {
			e.printStackTrace();
		}  
	}
}
B

Boa noite Lord,

O que havia me pedido, queria ver como funciona a classe Scanner…

public static List<String> buscarTxt2(String path){
		List<String> result=new ArrayList<String>();
		File file=new File(path);
		
		String []paths=file.list();
									
		Scanner scanner=new Scanner(Arrays.toString(paths).replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(",", " "));
		//cria uma expressão regular p/achar string correspondente
		//nesta expressao está, o que for caracter acompanhado de .txt
		scanner.findInLine("\\w.\\.txt");
		
		while(scanner.hasNext()){
			result.add(scanner.next());
		}
		return result;
	}

Achei uma excelente solução :
http://www.mkyong.com/java/how-to-find-files-with-certain-extension-only/

Falow

L

Muito obrigado cara ,mais ainda nao tenho conhecimentos em expressao regular se puder me dar uma dica de livro videoaula pra estudar agradeceria .

Criado 16 de março de 2013
Ultima resposta 18 de mar. de 2013
Respostas 10
Participantes 3