Download Arquivo Base64.encode

0 respostas
juliocesarsrosa

Ola galera ... estou com um problema...preciso de uma aajudinha....
sou novo em java entao ainda tenho algumas dificuldades primarias..

Bom,eu tenho um diretorio e nesse diretorio existem varios arquivos(.txt) cada um com um nome especifico..
o que eu tenho que fazer é vasculhar esse diretório ver se existe algum arquivo que tem o mesmo nome que o meu "getNomeArquivo"e se tiver..
eu tenho que pegar esse arquivo passa-lo para Base64.encode e depois devolvelo no "responseVO.setArquivoRetorno"

Agora meus problemas:
eu vasculho o diretorio e acho quem eu preciso certinho sem problemas
porem na hora do Base64.encode ele esta pegando mais de um arquivo , axo que pelo fato de eu estar usando o buf
e ele estar vasculhando o diretorio através disso na hora que uso encode ele pega o buf de todos os arquivos que ele vasculhou..

ou seja eu precisava que ele só desse o encode no arquivo que ele fizesse o getAbsoluteFile()... ou seja apenas o arquivo que eu peguei no diretorio e jogarei no responseVO.setArquivo Retorno.

outro problema é que acabei me perdendo e axo que ao invés de devolver o Arquivo e si eu estou devolvendo o seu conteudo(isso no "responseVO.setArquivoRetorno")
e eu tenho que devolver o arquivo.
porem o setArquivoRetorno é do tipo string nao sei como retornar um file pra ele...

deculpem as duvidaas meio primarias...

vlw galera comentarei o codigo.

private FT05ResponseVO buildResponse(String source, FT05RequestVO requestVO) throws HandleException {
		
		FT05ResponseVO responseVO = new FT05ResponseVO();	
	

		try {
			LocalFileUtil fileUtil = new LocalFileUtil(source);
			List<File> files = fileUtil.getFiles("");

			byte[] buf = new byte[1024];
			int len = 0;
			
			log.info("Generating FT00 response object");

			for (File file: files) {
				
				InputStream in = null;
				ByteArrayOutputStream out = null;
				
				try {
					in = new FileInputStream(file);
					out = new ByteArrayOutputStream(); 
					
					while ((len = in.read(buf)) > 0){
						out.write(buf, 0, len);
						out.flush();
						
						if(file.getName().contains(requestVO.getNomeArquivo())){
							byte buffer[] = new byte[(int) file.length()];  						
							BufferedInputStream input = new BufferedInputStream(new FileInputStream(file.getAbsoluteFile()));  //até aqui axo que trago o arquivo certinho
							String arquivo = Base64.encode(buf);//porem aqui ele pega o buf de todos os arquivos vasculhados e nao soh do que eu quero
							input.read(buffer, 0, buffer.length);  
			                                input.close();  
			            		              		
					
			               responseVO.setArquivoRetorno(arquivo);//devolve o conteudo e nao o arquivo , devolve encode porem o encode de todos os arquivos .. e nao soh do que eu quero.
						}
				
					}

				     
				} catch (Exception e) {

				} finally {
					try {
						if (in != null) {
							in.close();
						}
						if (out != null) {
							out.close();
						}
					} catch (IOException e) {
						log.warn("Fail to close streams for file " + file.getName(), e);
					}
				}
			}
		} catch (IntegLayerException e) {
			throw new HandleException(IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}
		
		return responseVO;
	}
Criado 8 de junho de 2011
Respostas 0
Participantes 1