ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
3678
3678
EMPFEHLEN
-
Hi Leute
Ich will eine PDF-Datei byteweise einlesen, aber wenn ich aus dem byte-Array dann wieder einer PDF-Datei erzeuge ist diese fehlerhaft und hat 0 KB.
Code :1 2 3 4 5 6 7 8 9
public byte[] methode2(File file) throws IOException{ ByteArrayOutputStream bo = new ByteArrayOutputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8")); int c; while ((c = in.read()) > -1){ bo.write(c); } return bo.toByteArray(); }
und in der main-Methode:
Kann mir jemand sagen, was ich vergessen habe?Code :1 2 3 4
byte[] array = w2.methode2(file); FileOutputStream f = new FileOutputStream(new File("d:/lala.pdf")); f.write(array);
Mit zip Archiven ist es übrigens das gleiche.
Gruß
-
Du darfst da kein encoding angeben. Das was du versuchst zu lesen sind binäre-Dateien und keine Plain-Text.
Versuch das:
BufferedReader in = new BufferedReader(new FileReader(file));
-
Hi
Danke für deine Antwort, leider ist die Datei immer noch nur 0 KB groß.
Kann man pdf-Dateien nicht byteweise einlesen?
-
Du musst auf jeden Fall deine ganzen Streams mal schließen, sonst wird die Datei eventuell nicht vollständig geschrieben.
-
Irgendwie macht der FileReader da Unsinn...
So gehts:FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
public static byte[] methode2(File file) throws IOException { final ByteArrayOutputStream bo; final long length = file.length(); if (length < Integer.MAX_VALUE) { bo = new ByteArrayOutputStream((int) length); } else { bo = new ByteArrayOutputStream(Integer.MAX_VALUE); } final FileInputStream in = new FileInputStream(file); int c; while ((c = in.read()) != -1) { bo.write(c); } in.close(); bo.close(); final byte[] byteArray = bo.toByteArray(); System.out.println("File length: " + length); System.out.println("Byte Array length: " + byteArray.length); return byteArray; } public static void main(String[] args) throws IOException { File file = new File("Test.pdf"); byte[] array = methode2(file); FileOutputStream f = new FileOutputStream(new File("lala.pdf")); f.write(array); f.close(); }
Musst du nur noch das ExceptionHandling ordentlich machen
-
oh wow
Danke schön, dass ist echt super
Vielen Dank für deine Hilfe.
LG
Ähnliche Themen
-
Korrekt byteweise einlesen
Von Tim Bureck im Forum .NET CaféAntworten: 2Letzter Beitrag: 24.08.10, 19:01 -
Binärdatei einlesen (byteweise)
Von soeni1987 im Forum JavaAntworten: 2Letzter Beitrag: 14.03.10, 22:13 -
PDF Datei in Datenbank gespeichert und fehlerhaft
Von FipsTheThief im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 27.02.06, 18:18 -
Datei I/O fehlerhaft - sehr nervig!
Von Da Hacker im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 03.12.05, 15:40 -
ANSI C: Datei byteweise auslesen?
Von Tensi im Forum C/C++Antworten: 7Letzter Beitrag: 10.05.03, 13:37





Zitieren

Login





