Dúvida funcionamento de while.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

Não consegui compreender uma parte do código abaixo, (está em uma servlet):



Eu sei que ele pega um arquivo jar, cria um outputStream e o preenche com esse arquivo jar.
O que eu não entendi é o funcionamento desse while, eu sei o que ele faz(por que estava escrito no livro), mas não entendi o diferente de -1,
nem o is.read(bytes).
pvrsouza
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline

O que tu não entendeu? O motivo da condição usar o "-1"?

Isso tem relação com código ASCII. O "-1" é um caracter que não existe em ASCII, portanto, enquanto o loop encontra caracteres válidos na cadeia ele entra no loop. Quando não encontrar mais nada (-1), ele sai.

zoren
GUJ Master
[Avatar]

Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline

esse while vai escrever o seu arquivo na pagina, assim vc vai poder fazer download

qto ao read ele vai ler o arquivo local para escrever na pagina

This message was edited 1 time. Last update was at 11/02/2010 11:19:24

[Email] [MSN]
osmio
Java Ninja

Membro desde: 22/08/2006 20:27:54
Mensagens: 252
Offline

Da uma olhada na documentação do método read() da classe InputStream.

La explica direitinho o que significa cada valor retornado.

At.

"O pensamento lógico pode levar você de A a B, mas a imaginação te leva a qualquer parte do universo."
- Einstein, Albert
[Email]
cubo
JavaBaby
[Avatar]
Membro desde: 20/09/2009 10:29:05
Mensagens: 91
Offline

pvrsouza wrote:O que tu não entendeu? O motivo da condição usar o "-1"?

Isso tem relação com código ASCII. O "-1" é um caracter que não existe em ASCII, portanto, enquanto o loop encontra caracteres válidos na cadeia ele entra no loop. Quando não encontrar mais nada (-1), ele sai.



na verdade -1 não significa 'nada', siginifica EOF (End of File), e EOF é representado por -1

Não existem grandes conquistas sem grandes desafios.
[Email] [MSN]
pvrsouza
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline

Ops. É isso mesmo! Perdoem a falha! Mas foi com boa intenção! Rsrsrsrsr
pmlm
GUJ Master

Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline

Será que o problema é mesmo o -1 ou o facto de fazer a atribuição e comparação na mesma linha?

Já foi explicado atrás o porquê do -1. Se ajudar a compreender, vê o seguinte código que é exactamente a mesma coisa:


Rafael ap.
JavaChild
[Avatar]

Membro desde: 24/08/2008 17:15:06
Mensagens: 132
Offline

a verdade -1 não significa 'nada', siginifica EOF (End of File), e EOF é representado por -1


Exatamente.

Eu dei uma lida no javadoc(http://www.docjar.com/docs/api/java/io/InputStream.html#read),
e entendi melhor, o que eu achei estranho é que esse método read (pelo que eu entendi) lê quantos
caracteres conseguir, não um por vez, nem todos de uma vez (retorna um int referente a isso).

Mas agora está claro. E eu também não tinha visto atribuição e comparação na mesma linha, falta de cultura a minha.

Obrigado a todos.
pvrsouza
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline

Ele retorna um valor inteiro porque em ASCII os caracteres são representados por números.

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team