Não sei se entendi bem, mas o que você quer é criar um Servlet que envie um arquivo ao usuario quango for acessado?
Se for, é só escrever o conteudo do arquivo na saída do Servlet e mudar o Content-Type para application/octet-stream
Se não for isso, explique melhor
R
rmlangPJ
Seria uma aplicação desktop (swing) baixando arquivos binários da internet e
armazenando em uma pasta no disco local para depois acessar os arquivos.
Uma espécie de “cache”, para não ter que ficar baixando várias vezes um
arquivo para, por exemplo, visualizar uma imagem.
Olha só o código que eu montei, utilizando singleton e thread...
publicclassDownloaderimplementsRunnable{publicstaticDownloaderinstance;privateString[]image;privateDownloader(String[]image){setImage(image);}publicstaticDownloadergetDefaultDownloader(String[]image){if(instance==null)instance=newDownloader(image);returninstance;}publicstaticDownloadercreateDownloader(String[]image){returnnewDownloader(image);}publicvoidsetImage(String[]image){this.image=image;}publicvoidrun(){try{downloadImage(image);}catch(UnknownHostExceptione){System.out.println(e.getMessage());}catch(IOExceptione){System.out.println(e.getMessage());}}publicvoiddownloadImage(String[]image)throwsUnknownHostException,IOException{StringimageFolder=createImageFolder();for(intindex=0;index<image.length;index++){System.out.println("downloading from "+image[index]);try{URLurl=newURL(image[index]);BufferedInputStreambis=newBufferedInputStream(url.openStream());DataInputStreamdis=newDataInputStream(bis);String[]split=image[index].split("/");StringpathName=imageFolder+File.separator+split[split.length-1];System.out.println("downloading to "+pathName);Filefile=newFile(pathName);FileOutputStreamfos=newFileOutputStream(file);byte[]buffer=newbyte[1024];while(dis.read(buffer)!=-1){fos.write(buffer);}fos.close();dis.close();bis.close();}catch(EOFExceptioneof){System.out.println("Downloader.EOFException: "+eof.getMessage());}catch(IOExceptionioe){System.out.println("Downloader.IOException: "+ioe.getMessage());}catch(Exceptione){System.out.println("Downloader.Exception: "+e.getMessage());}}}privateStringcreateImageFolder(){// TODO: criar a pasta de armazenamento local das imagensreturnnull;}}
Ainda não testei o código, mas a minha preocupação principal é com as classes de streaming de dados. Preciso que seja o mais rápido e seguro possivel e o java tem uma pilha de Streammers...