Erro ao copiar mensagem

3 respostas
J

Na seguinte rotina de download, depois de aparecer a tela salvar como,
está gravando o conteúdo do arquivo vazio.

try
{

String origem = <a href="http://127.0.0.1:8080/teste/arquivo.txt">http://127.0.0.1:8080/teste/arquivo.txt</a>”;

//neste exemplo estou utilizando endereço fixo

byte[] cache;

URL urlo = new URL(origem);
URLConnection urlCo = urlo.openConnection();

InputStream in = urlo.openStream();
ServletOutputStream out = response.getOutputStream();

int lengthFile = in.available();
cache = new byte[4096];

response.setContentLength(lengthFile);

response.setContentType(text/text);

response.setHeader(Content-Disposition”, attachment;filename=” + “novo.txt”);

response.setIntHeader(Content-length”,lengthFile);

int tamanho;

while((tamanho = in.read(cache)) != -1)

{

out.write(cache,0,tamanho);

out.flush();

}

in.close();

out.close();
}

catch(Exception ex)

{

ex.printStackTrace();

}

}

Se ao invés de :

InputStream in = urlo.openStream();//caminho variável

Utilizo a seguinte sintaxe:

InputStream in = new FileInputStream(“c:/arquivo.txt”);//caminho fixo

Dá certo.

Porque quando utilizo:
InputStream in = urlo.openStream();//caminho variável
o conteúdo do stream vai vazio.

3 Respostas

H

Supondo que você já testou sua porta http digitando no prompt

telnet 127.0.0.1 8080 [Enter]
GET /teste/arquivo.txt [Enter]
[Enter]

Tente remover a linha openconnection.

J

Fiz o teste pelo telnet, retornou o conteúdo do arquivo.

Inseri a seguinte linha:
// cria uma entrada
DataInputStream dis = new DataInputStream(in);

O conteúdo do arquivo continua vazio.

J

Inclui a seguinte sintaxe:
BufferedReader bf = new BufferedReader(
new InputStreamReader(url.openStream)
);

Deu certo.
Obrigado pela ajuda.

Criado 26 de dezembro de 2003
Ultima resposta 27 de dez. de 2003
Respostas 3
Participantes 2