Originariamente inviato da andbin
Quindi vuoi leggere il file come se fosse un qualunque file binario, leggerne il contenuto senza alcuna interpretazione e metterlo in un array di byte?
Premesso che dovresti spiegare l'utilità di una cosa del genere (a cosa ti serve di preciso?) ... si può fare così: usi un FileInputStream per leggere dal file e usi un ByteArrayOutputStream per scrivere nell'array (che è interno).
Fai un ciclo in cui leggi dal file un blocco di N bytes (quanti decidi tu), quindi lo scrivi i dati sul ByteArrayOutputStream. Alla fine con toByteArray() di ByteArrayOutputStream ottieni l'array di byte.
Se non è chiaro, spiego meglio.
Ok mi spiego meglio direttamente con il codice:
codice:
public boolean renderPDFtoFS(String pStrPathFilePXml, String pStrPathFilePdf) {
try {
// Istanzio oggetto di tipo File (passo path file Xml)
File objFile = new File(pStrPathFilePdf);
// Istanzio oggetto FileInputStream e gli passo
FileInputStream objFileInputStream = new FileInputStream(objFile);
// Recupero le dimensioni del file
long length = objFile.length();
// Istanzio un'array di byte passando la lunghezza del file (long)
byte[] objArrayByte = new byte[(int) length];
// Ciclo e inserisco nell'Array di Byte
objFileInputStream.read(objArrayByte);
/*
while(objFileInputStream.read() != -1)
objFileInputStream.read(objArrayByte);
objArrayByte[i] =
*/
// Chiudo file System
objFileInputStream.close();
// prima configuro il bean
this.setXmlBytes(objArrayByte);
// faccio il render
objFormServerBean.renderForm(strFormPreference, "", strHttpHeader, "", false);
// prendo il contenuto
byte[] cContent = objFormServerBean.getContents();
// salva su FS
ECMDAO pdfDAO = new ECMDAO("", "");
pdfDAO.putPDFFile(cContent, pStrPathFilePdf);
} catch (RenderFormException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException f){
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}
Non credo che cosi funzioni... come faccio a mettere in objArrayByte il contenuto in byte del file? questo metodo non lo riempe? objFileInputStream.read(objArrayByte);
Cosi non funziona!