Recursividade de metodo  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
gqferreira
Virtual Machine Man
[Avatar]

Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline

Olá pessoal!

Estou tendo um problema com metodos recursivos, fiz um exemplo aqui:

A ideia era que ao encontrar o primeiro arquivo com o tal nome, o metodo fosse 'decapitado' . Pelo que eu sei, quando vc chama o proprio metodo de novo é como se vc tivesse outro igualzinho mas no mesmo codigo, ou seja o mesmo. A diferenca é que com o mesmo codigo ele gera varias instancias do metodo, o que ta acontecendo é que o break mata a instancia atual (nao se auto-chama mais), mas dai ele volta para a antiga e continua... como resolver isso?


"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw

Gustavo Quirino Ferreira
[WWW] [MSN]
gqferreira
Virtual Machine Man
[Avatar]

Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline

Solucionei dessa forma:

Mas assim tive que criar uma variavel a mais, se eu nao conseguir de outro jeito acho que vai ficar assim.

"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw

Gustavo Quirino Ferreira
[WWW] [MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Oi Gustavo,

Dei uma melhorada no seu código. Na verdade vc não precisa parar a recursão, um arquivo com o mesmo nome pode existir em diversos subdiretórios.
Dá uma olhada.

[]´s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
rimarck
Entusiasta Java

Membro desde: 29/05/2008 12:06:04
Mensagens: 15
Localização: São Paulo / Goiânia
Offline


Rimarck Vieira de Carvalho Junior
[Email]
gqferreira
Virtual Machine Man
[Avatar]

Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline

É ... eu fiz assim antes mas o 'lance' de ter um metodo que retorna um List<File> contendo o nome de todos os arquivos encontrados pode dar problema, fiz um teste indicando o diretorio /home, e como vc sabe, existem muitos arquivos e o List ficou tao grande que deu "java heap space"... pau de memoria... entao fiz com que a medida que vou listando vou verificando e crio um list somente com os encontrados, assim nao tenho que armazenar um list gigante com todos os files encontrado no diretorio a ser pesquisado. Mas um criterio de pesquisa que desejo é parar a pesquisa assim que encontrar o primeiro. Sei que pode haver varios com o mesmo nome, mas por exemplo:

Sei que existe somente um arquivo GUSTAVO.txt em /home..., entao nao precisa continuar o massacre do processador tentando achar outro...

"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw

Gustavo Quirino Ferreira
[WWW] [MSN]
rimarck
Entusiasta Java

Membro desde: 29/05/2008 12:06:04
Mensagens: 15
Localização: São Paulo / Goiânia
Offline

Se você quiser so achar 1 arquivo:


Rimarck Vieira de Carvalho Junior
[Email]
denirroberto
JavaBaby
[Avatar]

Membro desde: 19/01/2011 11:09:04
Mensagens: 78
Offline

davidbuzatto wrote:Oi Gustavo,

Dei uma melhorada no seu código. Na verdade vc não precisa parar a recursão, um arquivo com o mesmo nome pode existir em diversos subdiretórios.
Dá uma olhada.

[]´s


Maravilha Gustavo excelente dica, mas estou com um problema, consigo apenas listar todos os arquivos a intenção é listar somente as pastas tem como? Tentei tirar o diferente de !f.isDirectory() mas nada feito, consigo diferenciar se é oculto ou não mas não consigo trazer os diretórios e subdiretorios. Ah, tem como criar edentação também, estou usando java web jee 6.

Obrigado
[MSN]
denirroberto
JavaBaby
[Avatar]

Membro desde: 19/01/2011 11:09:04
Mensagens: 78
Offline

Bom já que ninguém pode me ajudar resolvi sozinho.
[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team