Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    [Java2] Trasformare file in un array di byte

    Ciao a tutti,

    volevo chiedervi un grosso aiuto essendo alle prime armi con Java.

    Avendo un file xml come faccio per mettere tutto il suo contenuto in un array di byte?

    Grazie anticipatamente
    Tony

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java2] Trasformare file in un array di byte

    Originariamente inviato da tony83
    Avendo un file xml come faccio per mettere tutto il suo contenuto in un array di byte?
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Re: Re: [Java2] Trasformare file in un array di byte

    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!
    Tony

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 © 2026 vBulletin Solutions, Inc. All rights reserved.