tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
3678
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    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:
    Code :
    1
    2
    3
    4
    
    byte[] array = w2.methode2(file);
            
            FileOutputStream f = new FileOutputStream(new File("d:/lala.pdf"));
            f.write(array);
    Kann mir jemand sagen, was ich vergessen habe?
    Mit zip Archiven ist es übrigens das gleiche.

    Gruß
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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));
     

  3. #3
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Hi
    Danke für deine Antwort, leider ist die Datei immer noch nur 0 KB groß.
    Kann man pdf-Dateien nicht byteweise einlesen?
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Du musst auf jeden Fall deine ganzen Streams mal schließen, sonst wird die Datei eventuell nicht vollständig geschrieben.
     

  5. #5
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Irgendwie macht der FileReader da Unsinn...

    FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream
    So gehts:
    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
     

  6. #6
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    oh wow

    Danke schön, dass ist echt super
    Vielen Dank für deine Hilfe.

    LG
     

Ähnliche Themen

  1. Korrekt byteweise einlesen
    Von Tim Bureck im Forum .NET Café
    Antworten: 2
    Letzter Beitrag: 24.08.10, 19:01
  2. Binärdatei einlesen (byteweise)
    Von soeni1987 im Forum Java
    Antworten: 2
    Letzter Beitrag: 14.03.10, 22:13
  3. PDF Datei in Datenbank gespeichert und fehlerhaft
    Von FipsTheThief im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 27.02.06, 18:18
  4. Datei I/O fehlerhaft - sehr nervig!
    Von Da Hacker im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 03.12.05, 15:40
  5. ANSI C: Datei byteweise auslesen?
    Von Tensi im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 10.05.03, 13:37