hallo,
nachdem mir in einem anderen Thread mitgeteilt wurde, das man mit FileReader bzw. FileWriter keine Binärdateien lesen und schreiben kann, versuche ich es nun mit input- bzw. outputStream.
Leider scheitert auch das....
Was ich mache:
- Einlesen der Datei, in meinem Test ein pdf, und konvertieren des Inhalts mit Base64:
- Dekodieren des Dateiinhalts mit Base64 und schreiben des Files, dabei kommt ein pdf raus:
Versuch ich nun das pdf mit dem acrobat-reader zu öffnen, krieg ich die Meldung:
Was mach ich hier falsch?
nachdem mir in einem anderen Thread mitgeteilt wurde, das man mit FileReader bzw. FileWriter keine Binärdateien lesen und schreiben kann, versuche ich es nun mit input- bzw. outputStream.
Leider scheitert auch das....
Was ich mache:
- Einlesen der Datei, in meinem Test ein pdf, und konvertieren des Inhalts mit Base64:
Code:
public void setAndEncodeSourceFileContent(String sourceFileName) {
Base64 base64 = new Base64();
FileInputStream fileInputStream = null;
StringBuffer inputStreamAsBytes = new StringBuffer();
try {
fileInputStream = new FileInputStream(sourceFileName);
int singleChar;
while((singleChar = fileInputStream.read()) != -1){
inputStreamAsBytes.append(singleChar);
}
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(fileInputStream != null){
try {
fileInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
this.sourceFileContent = new String(
base64.encode(
inputStreamAsBytes
.toString()
.getBytes()));
}
- Dekodieren des Dateiinhalts mit Base64 und schreiben des Files, dabei kommt ein pdf raus:
Code:
public void decodeSourceFileContentAndWrite2File(String path) {
Base64 base64 = new Base64();
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(path + "\\" + this.sourceFileName);
fileOutputStream.write(base64.decode(sourceFileContent.getBytes()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(fileOutputStream != null){
try {
fileOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Versuch ich nun das pdf mit dem acrobat-reader zu öffnen, krieg ich die Meldung:
Code:
Acrobat Reader konnte bla.pdf nicht öffnen, da der Dateityp nicht unterstützt wird oder die Datei beschädigt ist (z.b. wenn sie als email-Anhang geschickt und nicht richtig dekodiert wurde
Was mach ich hier falsch?