Download de um arquivo via outputstream

Bom …
eu tenho um arquivo em meu site que gostaria de redireciona-lo para download atraves de uma servlets que bloqueia requisiçoes .zip, e gostaria que ela fizesse o download direto no outputstream . . …
por exemplo …

o usuario digita www.meusite.com.br/arq/eu.zip

entao minha servlets bloqueia o arquivo, eu verifico se ele tem permissao , se ele tiver
eu envio o arquivo via outputstream

… Como eu sou novo em java ainda nao sei fazer a parte final
alguem poderia dar uma ajuda na parte do outputstream…

o resto todo ja esta feito … mas nao consigo enviar um arquivo de dentro do meu site por outputstream

Tem que escrever o stream no response.

me desculpa pela ignorancia mas como assim …
eu devo colocar
response.?

InputStream in = new BufferedInputStream(new FileInputStream("blablabla.txt") ); int ch; while ((ch = in.read()) !=-1) { out.print((char)ch); }

quando eu coloco o inputstream para ler um arquivo
ele tenta ler o arquivo do computador da pessoa ao inves de procurar um no diretorio virtual do apache tom cat,

por exemplo, como faria para ele ler o arquivo que esta dentro de arquivo/eu.zip
pois ao fazer isto com o input ele da um erro dizendo
que nao pode encontrar o arquivo\eu.zip, note que ele vira a barra automaticamente…

Ele tenta ler um arquivo do computador da pessoa???

Mano… eu “corto fora” se isso for verdade, huahuahuahuahua, dá uma olhada melhor meu velho… uma aplicação JEE acessando um arquivo da pessoa por um servlet? “izo no ecsiste”, haha.

Mas então… não sei se entendi muito bem, mas faz o seguinte: vai ai no seu código e põe isso:

File f = new File("."); // "." = diretorio da onde você está. System.out.println(f.getAbsolutePath());

Ai você vai ver onde que você está, com base nesse caminho que ele colocar na tela, você vai saber como chegar nesse seu arquivo ai (tipo, colocar uns “…/” coisas do tipo).

Falows

Se eu tinha dito é pq tava acontecendo…
agora eu ja resolvi…

era so colocar

String novo =(String) getServletContext().getRealPath("1.jpg");
	FileInputStream arquivo = new FileInputStream(novo);
	ServletOutputStream saida = response.getOutputStream();	
	byte[] buffer = new byte[1024];
	int b =0;
	response.setContentType("image/jpeg");
	while (( b = arquivo.read(buffer))!= -1)
		saida.write(buffer, 0, b);
	saida.flush();
	arquivo.close();