Mostrar imagem pesquisada na tela se ela existir

5 respostas
D

pode pular lá pra baixo que já tenho um “código” que dispensa esse post inicial

public class Filter { public File[] finder(String dirName) { File dir = new File(dirName); return dir.listFiles(new FilenameFilter() { public boolean accept(File dir, String filename) { return filename.endsWith(".txt"); } }); } }

como faço pra buscar além de .txt, outras extensões também?

e na busca procurar pelo texto de uma variavel, sei que seria algo como "filename.startsWith(VARIAVEL) &&… endsWith…

to com esse código ai, mas não entendi como chamo a função ou onde digito o endereço pra fazer a busca, adicionei isso antes do public File[]

String dirName = "C:\\Documents and Settings\\user\\Meus documentos\\Minhas imagens";

(to utilizando eclipse e rodando nele mesmo, aparece a tela, mas não sei como “linkar” o Filter ao botão, pois o Filter não tem um function :|)

5 Respostas

E

Digamos que você queira achar os arquivos terminados por txt ou doc. O código seria:

return filename.endsWith(".txt") || filename.endsWith (".doc"); }

Faça suas modificações de acordo com suas necessidades.

Na prática, você precisa ver que alguns arquivos não terminam com “.txt” (minúscula) mas “.TXT” ou alguma variação disso. Por isso é aconselhável você passar o nome para minúsculas ou maiúsculas antes de usar endsWith.

D

entanglement:
Digamos que você queira achar os arquivos terminados por txt ou doc. O código seria:

return filename.endsWith(".txt") || filename.endsWith (".doc"); }

Faça suas modificações de acordo com suas necessidades.

Na prática, você precisa ver que alguns arquivos não terminam com “.txt” (minúscula) mas “.TXT” ou alguma variação disso. Por isso é aconselhável você passar o nome para minúsculas ou maiúsculas antes de usar endsWith.

valeu a resposta, encontrei esse código:

private void mostrarTxt() { String diretorio = "C:\\Documents and Settings\\user\\Meus documentos\\Minhas imagens"; File folder = new File(diretorio); File[] listOfFiles = folder.listFiles(); for (int i = 0; i < listOfFiles.length; i++) { if (listOfFiles[i].isFile()) { String files = listOfFiles[i].getName(); if (files.endsWith(".txt")) { System.out.println(listOfFiles[i].getName()); } } else { System.out.println("Tem arquivo não champs"); }

fiz o teste, ele só não funciona o ELSE, alterei o .txt pra .txat, mas ele simplesmente não retorna nada no console…

esse return, seria o equivalente ao print? como nesse return faço dar um print na tela??!?!

com esse código já da pra eu fazer algumas modificações, muito obrigado viu!!!

D
sei que talvez o código não está nas mais perfeitas condições pra ser limpo e rápido, mas servirá para o que planejo, que é pegar a imagem com o número digitado (o nome do arquivo é número)... retornar se existe, se existir, dar um display da IMAGEM, e ia utilizar botão próximo e anterior pra percorrer o array da imagem e ver se tem cópias (.001,.002,.003...etc), mas por enquanto to travado aqui ->
public void mostrarMatricula() {
        String diretorio = "C:\\Documents and Settings\\cartorio\\Meus documentos\\Minhas imagens";
        String matricula = txtMatricula.getText();
        int confere = Integer.parseInt(matricula); 
        if(confere < 10 && confere >= 1) {
        	matricula = "00000" + confere;
        }
        if(confere < 100 && confere >= 10) {
        	matricula = "0000" + confere;
        }
        if(confere < 1000 && confere >= 100) {
        	matricula = "000" + confere;
        }
        if(confere < 10000 && confere >= 1000) {
        	matricula = "00" + confere;
        }
        if(confere < 100000 && confere >= 10000) {
        	matricula = "0" + confere;
        }
 
 
        File folder = new File(diretorio);
        File[] listOfFiles = folder.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                String files [] = listOfFiles[i].getName().split("\\.");
                if(files[0].equals(matricula)) {
                	System.out.println(listOfFiles[i].getName());
 //                   System.out.println(files[0]);                 
                } 
                
               } else {
                  	System.out.println("Matricula não encontrada");
                    //  	System.out.println(files[0]);
                      	break;
            }
        }
	}
}

tenho na pasta que ele faz a busca:
000001.001
000103.001
000103.002
000103.003

quando digito 1, ele retorna certinho o arquivo, e quando digito 103 ele retorna certinho o .001, .002, .003

porém, quando digito algum número que não tem, ele não retorna o ELSE, pq???

e outra coisa, como faria pra ele mostrar o arquivo de imagem NA TELA?

já sei que eu usaria o primeiro somente pra mostrar a primeira página, e usaria um anterior/proximo pra percorrer o array do listOfFiles[x] de acordo com a página, já que neste array ta o endereço completo da imagem!!!

agradeço se alguem puder me ajudar..

H
import java.io.File;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String diretorio = "C:\\Documents and Settings\\cartorio\\Meus documentos\\Minhas imagens";
		String matricula = txtMatricula.getText();
		int confere = Integer.parseInt(matricula);
		if (confere < 10 && confere >= 1) {
			matricula = "00000" + confere;
		}
		if (confere < 100 && confere >= 10) {
			matricula = "0000" + confere;
		}
		if (confere < 1000 && confere >= 100) {
			matricula = "000" + confere;
		}
		if (confere < 10000 && confere >= 1000) {
			matricula = "00" + confere;
		}
		if (confere < 100000 && confere >= 10000) {
			matricula = "0" + confere;
		}

		File folder = new File(diretorio);
		File[] listOfFiles = folder.listFiles();
		for (int i = 0; i < listOfFiles.length; i++) {
			if (listOfFiles[i].isFile()) {
				String files[] = listOfFiles[i].getName().split("\\.");
				if (files[0].equals(matricula)) {
					System.out.println(listOfFiles[i].getName());
					// System.out.println(files[0]);
				} else {
					System.out.println("Matricula não encontrada");
					// System.out.println(files[0]);
					break;
				}

			}
		}
	}

}

Tome cuidado com a posição onde o else se encontra, pois ele estava ligado ao primeiro if dentro do for, por isso é bom identar o código, se usar o eclipse ctrl + shift + f, no netbeans e no intellij eu não sei qual é o comando. Agora quanto a mostrar a imagem, creio que vc terá que aprender sobre swing, ou JavaFx, sendo este último um candidato a subistituir o primeiro que eu citei, segundo algumas coisas que li no guj, como não trabalho com Java pra Desktop não posso te ajudar nessa =/

D

eu já tinha descido o else mais um { que nem vc fez, porém quando ele está mais pra baixo,

digito 1 (ele retorna que existe, mas também retorna a mensagem de que não existe)

se eu digito 103, diz que não existe, mas sim, existe o arquivo 000123

nesse código, ele lista sempre os que existem, mas os que não existem ele não diz que não existe, simplesmente não ocorre nada ->

public void mostrarMatricula() {
		String diretorio = "C:\\Documents and Settings\\cartorio\\Meus documentos\\Minhas imagens";
		String matricula = txtMatricula.getText();
		int confere = Integer.parseInt(matricula);
		if (confere < 10 && confere >= 1) {
			matricula = "00000" + confere;
		}
		if (confere < 100 && confere >= 10) {
			matricula = "0000" + confere;
		}
		if (confere < 1000 && confere >= 100) {
			matricula = "000" + confere;
		}
		if (confere < 10000 && confere >= 1000) {
			matricula = "00" + confere;
		}
		if (confere < 100000 && confere >= 10000) {
			matricula = "0" + confere;
		}

		File folder = new File(diretorio);
		File[] listOfFiles = folder.listFiles();
		for (int i = 0; i < listOfFiles.length; i++) {	
			String files[] = listOfFiles[i].getName().split("\\.");
			if (listOfFiles[i].isFile()) {
				// String files[] = listOfFiles[i].getName().split("\\.");
				if (files[0].equals(matricula)) {
					System.out.println(listOfFiles[i].getName());
					// System.out.println(files[0]);
				} 

			} else {
				System.out.println("non ecziste");

			}
		}
	}
}
Criado 29 de julho de 2013
Ultima resposta 30 de jul. de 2013
Respostas 5
Participantes 3