e aew galera !! estou com um problema e gostaria da ajuda de vcs…
tenho uma variavel que recebe uma string… que depois é codificada em base 64 …
ou seja eu codifico em base 64 para depois testar a descodificação… em base64
a codificação funciona ele bagunça os caracteres… certinho… porem nao consigo descodificalos depois …
segue meu código
package com.eversystems.il.tester.jms;
import static com.eversystems.il.util.IntegLayerErrorCodes.ERROR_XML_IN;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import com.eversystems.il.handle.core.HandleException;
import com.eversystems.il.main.IntegLayerException;
import com.eversystems.il.util.DateUtil;
import com.eversystems.il.util.StringUtil;
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class FT01Teste {
public static void main(String[] args) throws IOException, IntegLayerException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String codigoProduto = "DC";
String source;
if (codigoProduto.equals("DC")) {
source = "c:\";
buildFile(source);
}
}
private static void buildFile(String source)throws HandleException, IOException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String value = "Testando conteudo do arquivo Texto...";
value = Base64.encode(value.getBytes());
File file = new File(source+ft01Teste.buildFileName(ft01Teste));
file.createNewFile();
FileWriter fw = new FileWriter(file);
fw.write(decodeFile(value));
fw.close();
}
private String buildFileName(FT01Teste ft01Teste) throws HandleException{
String fileName = "";
String name = "julio";
String clientCode = "4563456";
String data = "";
String nome = "cesar.txt";
String codigo = "32131";
try {
name = StringUtil.truncString(nome, '.');
clientCode = codigo;
data = DateUtil.toString(new Date(), "ddMMyyyy");
fileName = name+clientCode+"_"+data+".txt";
} catch (Exception e) {
throw new HandleException(ERROR_XML_IN, "Dados invalidos para formar o nome do arquivo: name:"+name+" clientCode:"+clientCode+"\n", e);
}
return fileName;
}
private static String decodeFile(String value) throws Base64DecodingException{// aki ele nao esta conseguindo decodificar...
byte[] decodeFile = Base64.decode(value.getBytes());
new ByteArrayInputStream(decodeFile);
return value;
}
}
algm sabe o que pode ser??
obrigado
private static String decodeFile(String value) throws Base64DecodingException{// aki ele nao esta conseguindo decodificar...
Exception?
Não executa o que deveria?
Não roda?
Entao na verdade primeiramente la em cima eu dou um
value = Base64.encode(value.getBytes());
para codificar…
ai a string que esta em value fica toda bagunçada blz… certinho…
depois eu quero decodificar ai chamo esse método
private static String decodeFile(String value) throws Base64DecodingException{
byte[] decodeFile = Base64.decode(value.getBytes());
new ByteArrayInputStream(decodeFile);
return value;
}
ele deveria decodificar o “value” mas na verdade passa por ele retorna normal continua e nao decodifica…
nao da erro nenhum mais tambem nao decodifica…
obrigado.
Claro, em que momento você atribui ao “value” um novo valor? Você apenas faz ele “passear” pelo método…
poutz sou noob ainda em java pode me ajudar me mostrar como ficaria essa parte???
obrigado amigão!
Meu caro, neste site http://www.coderanch.com/t/278987/Streams/java/convert-Bytearray-input-stream-String#1283137 existe uma solução. A resposta foi postada pelo Jim Yingst.
Basicamente, você precisará alterar o trecho
new ByteArrayInputStream(decodeFile);
para
ByteArrayInputStream generatedInputStream = new ByteArrayInputStream(decodeFile);;
E ctrl + C e ctrl + V no trecho postado, retornando o str.
Ola amigao eu implementei do geito que vc falou mais ainda n esta funcionando da uma olhadinha por favor…
ele passa pelo metodo retorna mas nao descodifica… é como se aidna estivesse só passeando…
talvez eu tenha feito algo errado…
obrigado
package com.eversystems.il.tester.jms;
import static com.eversystems.il.util.IntegLayerErrorCodes.ERROR_XML_IN;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.net.ftp.FTPClient;
import sun.net.ftp.FtpClient;
import com.eversystems.il.handle.core.HandleException;
import com.eversystems.il.main.IntegLayerException;
import com.eversystems.il.util.DateUtil;
import com.eversystems.il.util.StringUtil;
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class FT01Teste {
public static void main(String[] args) throws IOException, IntegLayerException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String codigoProduto = "DC";
String source;
if (codigoProduto.equals("DC")) {
source = "c:\";
buildFile(source);
}
}
private static void buildFile(String source)throws HandleException, IOException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String value = "Testando conteudo do arquivo Texto...";
value = Base64.encode(value.getBytes());
File file = new File(source+ft01Teste.buildFileName(ft01Teste));
file.createNewFile();
FileWriter fw = new FileWriter(file);
decodeFile(value);//Passando separadamente agora..
fw.write(value); //só grava agora depois que recebe do return do metodo de decodificação..
fw.close();
}
private String buildFileName(FT01Teste ft01Teste) throws HandleException{
String fileName = "";
String name = "julio";
String clientCode = "4563456";
String data = "";
String nome = "cesar.txt";
String codigo = "32131";
try {
name = StringUtil.truncString(nome, '.');
clientCode = codigo;
data = DateUtil.toString(new Date(), "ddMMyyyy");
fileName = name+clientCode+"_"+data+".txt";
} catch (Exception e) {
throw new HandleException(ERROR_XML_IN, "Dados invalidos para formar o nome do arquivo: name:"+name+" clientCode:"+clientCode+"\n", e);
}
return fileName;
}
public static ByteArrayInputStream decodeFile(String value) throws Base64DecodingException{
byte[] decodeFile = Base64.decode(value.getBytes());
ByteArrayInputStream generatedInputStream = new ByteArrayInputStream(decodeFile);
return generatedInputStream; //retornando stream agora..
}
}
E cade a parte do código que você deveria ter pego no link que passei? Chegou a ver ou não?
eu vi mais não compreendi muito bem … como disse sou meio noob ainda… poderia me dar um exemplo? grato
O código lá está pronto.
A grosso modo, apenas copiei a parte necessária do teu código (a codificação para base 64 e o início do decode) e uni ao trecho de código que lá está.
Não tem segredo.
vlww cara funcionou obrigadoo !!!
obrigado mesmo vlww
segue como ficouu
package com.eversystems.il.tester.jms;
import static com.eversystems.il.util.IntegLayerErrorCodes.ERROR_XML_IN;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.net.ftp.FTPClient;
import sun.net.ftp.FtpClient;
import com.eversystems.il.handle.core.HandleException;
import com.eversystems.il.main.IntegLayerException;
import com.eversystems.il.util.DateUtil;
import com.eversystems.il.util.StringUtil;
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class FT01Teste {
public static void main(String[] args) throws IOException, IntegLayerException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String codigoProduto = "DC";
String source;
if (codigoProduto.equals("DC")) {
source = "c:\";
buildFile(source);
}
}
private static void buildFile(String source)throws HandleException, IOException, Base64DecodingException {
FT01Teste ft01Teste = new FT01Teste();
String value = "Testando conteudo do arquivo Texto...";
value = Base64.encode(value.getBytes());
File file = new File(source+ft01Teste.buildFileName(ft01Teste));
file.createNewFile();
FileWriter fw = new FileWriter(file);
fw.write(decodeFile(value));
fw.close();
}
private String buildFileName(FT01Teste ft01Teste) throws HandleException{
String fileName = "";
String name = "julio";
String clientCode = "4563456";
String data = "";
String nome = "cesar.txt";
String codigo = "32131";
try {
name = StringUtil.truncString(nome, '.');
clientCode = codigo;
data = DateUtil.toString(new Date(), "ddMMyyyy");
fileName = name+clientCode+"_"+data+".txt";
} catch (Exception e) {
throw new HandleException(ERROR_XML_IN, "Dados invalidos para formar o nome do arquivo: name:"+name+" clientCode:"+clientCode+"\n", e);
}
return fileName;
}
private static String decodeFile(String value) throws Base64DecodingException{// aki ele nao estava conseguindo decodificar...
byte[] decodeFile = Base64.decode(value.getBytes());
return new String(decodeFile);
}
}