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;
}