Trabalhando com Base 64

Ola galera estou com um problema…
eu recebo um cara chamado “Arquivo” que sera o conteudo de um arquivo que eu crio nomeio e salvo em um diretorio.
o fluxo funciona nomal salva o arquivo com o seu conteudo, fiz em uma classe de testes… e funcionou perfeitamente…

o problema: o problema eh q esse cara “Arquivo” bem em Base64.encode … ou seja tenho que dar um decode nele para depois salvar o arquivo de modo
que o seu conteudo fique legivel…

segue meu código

private void buildFile(FT01RequestVO requestVO, String source)throws HandleException {
		try {

			File file = new File(source,buildFileName(requestVO));
			
			try {
				file.createNewFile();
				FileWriter fw = new FileWriter(file);
				fw.write(Base64.decode(requestVO.getArquivo())); // aki nao funciona ele acusa erro no fw.write
				fw.close();
				
			} catch (IOException e) {
				throw new HandleException(ERROR_FTP_UPLOAD,"Erro no upload do arquivo", e);
			}
		} catch (IntegLayerException e) {
			throw new HandleException(
					IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}

o trecho comentado do código tecnicamente deveria funcionar mais nao funciona… algm tem uma sugestão???

Tentei fazer de outro geito mas sou novo em java nao comprendo muito bem segue a tentativa…


private void buildFile(FT01RequestVO requestVO, String source)throws HandleException {
		try {
			File file = new File(source,buildFileName(requestVO));
			ByteArrayOutputStream out = null;
			
			try {
				
				file.createNewFile();
				FileWriter fw = new FileWriter(file);
				fw.write(decodeFile(requestVO.getArquivo));
				fw.close();
				
			} catch (IOException e) {
				throw new HandleException(ERROR_FTP_UPLOAD,"Erro no upload do arquivo", e);
			}
		} catch (IntegLayerException e) {
			throw new HandleException(
					IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}


              private static int decodeFile(String base64File, FT01RequestVO requestVO){ // nao sei se posso passa-lo como int...
		byte[] decodeFile = Base64.decode(base64File.getBytes());
		new ByteArrayInputStream(decodeFile);
		 
		return decodeFile(base64File); // aki tenho que retornar mais nao sei o que ...
		
	}

vlw galera !!!

Oi!

Certo, e qual o problema? :slight_smile:
Você realizou o decode do byte[], trabalhe com esse byte[] da forma como desejar, de acordo com as tuas necessidades.

Abraços.

o problema eh que nao sei o que retornar para ele continuar o fluxo ou seja aquilo ali nao fuinciona… tecnicamente é quase aquilo mas nao sei o que retorno…
ou meu retorno

return decodeFile(base64File); 

esta certo ??

 byte[] decodeFile = Base64.decode(base64File.getBytes());   

Nesta linha, você já realiza o decode, o decodeFile já é um byte[] decodificado, então, basta retorna-lo.
Caso contrário, você está mandando decodificar um byte[] que já foi decodificado, certo?

Abraços.

tem algum problema quanto ao metodo ser do tipo int???

obrigado