Lendo em arquivos e diretório de uma só vez

Galera, estou com um código que faz pesquisa em diretório, entretanto, ele lê os ficheiros de um diretório, caso tenha uma pasta dentro, ele solicita novamente a pesquisa da palavra a ser encontrada. Resumindo, eu queria que fizesse a pesquisa de uma vez só em pastas e arquivos do diretório. Segue a parte do código:

[code]if ( !pal.equals("") && array1.length == 13 ){
for (File file: fList){
if (file.isFile()){
BufferedReader in = new BufferedReader(new FileReader(file.getAbsolutePath()));
while ((linha = in.readLine()) != null){
if (linha.contains(pal)) {
char[] array = linha.toCharArray();

				                    	System.out.println("  **  CNPJ: " + array[75] + array[76] + "."+ array[77] + array[78] +
				                    				array[79] + "." + array[80] + array[81] + array[82]+ "/" + array[83] + array[84] +
				                    				+ array[85]+ "-" + array[86] + array[87] + "   Ano: "+ array[100] +
				                    				array[101] + array[102] + array[103] + "/" + array[104]+ array[105] + "  **");
				                    	
				                        System.out.println("  **  No arquivo: " + file.getName() + "  **");
				                        System.out.println("  **  No Diretório: " + file.getCanonicalPath()+ "  **	 \n");
				                        	
				                    }
				                }
						}else  if (file.isDirectory()){
							JOptionPane.showMessageDialog(null, "O diretório " + "/" + file.getName() + " foi encontrado. Faça outra busca! ");
							listar(file.getAbsolutePath());	
						}[/code]

Achei o problemas: depois que passava do “else if”, ele voltava para pedir a palavra, só fiz isolar…