Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    DataInputStream byte array

    Salve,

    devo simulare una richiesta HTTP in Java. L'URL che richiamo restituisce un'immagine e non una semplice stringa di testo. Devo prendere l'immagine e salvarla su un file.

    Ho fatto così:

    URL url = new URL("...");
    URLConnection conn = url.openConnection();
    DataInputStream is = new DataInputStream(conn.getInputStream());

    ma poi non so come creare il file e scrivere il bytearray all'interno.

    Potreste aiutarmi?

    Grazie

    Sportfantasy
    Luca

  2. #2
    Ecco... mi manca solo il codice per prendere i byte dalla urlConnection...

    codice:
    URL url = new URL("...");
    URLConnection conn = url.openConnection();
    DataInputStream is = new DataInputStream(conn.getInputStream()); 
    DataOutputStream os = new DataOutputStream(conn.getOutputStream());
    		
    byte[] byteArray = null;
    		
    /**
     * qua devo riempire il byteArray
     */
    		
    File file = new File("D:/pippo.png");
    FileOutputStream ostr = new FileOutputStream(file);
    BufferedOutputStream bstr = new BufferedOutputStream( ostr );
    bstr.write(byteArray, 0, byteArray.length);
    bstr.close();
    Sapreste aiutarmi?

    Grazie
    Luca

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sportfantasy
    Sapreste aiutarmi?
    In realtà DataInputStream non serve affatto, non devi "interpretare" ciò che ti invia il server. E se non devi fare cose particolari sui dati ma solo passarli pari pari su un file, non dovresti nemmeno cercare di creare un mega array che contenga tutti i dati.

    Basta creare un piccolo buffer e fare un loop in cui leggi un blocco di byte dal server e lo scrivi sul file. Concettualmente una cosa del tipo (poi aggiusta tu per le eccezioni ecc...):

    codice:
    InputStream is = conn.getInputStream();
    
    FileOutputStream fos = new FileOutputStream (file);
    BufferedOutputStream bos = new BufferedOutputStream (fos);
    
    byte[] buffer = new byte[1024];
    int len;
    
    while ((len = is.read (buffer)) > 0)
        bos.write (buffer, 0, len);
    Il BufferedOutputStream serve solo per migliorare le prestazioni della scrittura, bufferizzandola.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.