| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:03:17
|
Rafael ap.
JavaChild
![[Avatar]](/images/avatar/c1ca185ea0fad2ac9c1e9bf8e21c793e.jpg)
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).
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:18:00
|
pvrsouza
Virtual Machine Man
![[Avatar]](/images/avatar/dc58460601ab2b4e101cff43f30564f3.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:18:33
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:19:02
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:31:25
|
cubo
JavaBaby
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. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:33:26
|
pvrsouza
Virtual Machine Man
![[Avatar]](/images/avatar/dc58460601ab2b4e101cff43f30564f3.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:35:54
|
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:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:38:32
|
Rafael ap.
JavaChild
![[Avatar]](/images/avatar/c1ca185ea0fad2ac9c1e9bf8e21c793e.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2010 11:57:31
|
pvrsouza
Virtual Machine Man
![[Avatar]](/images/avatar/dc58460601ab2b4e101cff43f30564f3.jpg)
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.
|
|
|
 |
|
|