No, mi spiace ma ci sono solo cose inutili. A meno che tu debba usare la "serializzazione" degli oggetti in un secondo momento o per altro, usare un ObjectOutputStream addirittura con il suo writeObject per inviare un banale buffer byte[] è del tutto inutile/superfluo.Originariamente inviato da AtoXx
ho risolto così:
parte di codice per inviare un filecodice:OutputStream s1out = socket.getOutputStream(); FileInputStream fin = new FileInputStream(nome); dos = new DataOutputStream(s1out); dis = new DataInputStream(fin); byte buffer[] = new byte[dis.available()]; ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream() ); fin.read(buffer); oos.writeObject( buffer ); System.out.println("File Inviato!");
E pure i DataInputStream/DataOutputStream sarebbero inutili/superflui (ripeto, a meno che dimostri che ti servono anche per altro) visto che non stai usando i loro metodi specifici per i tipi "primitivi" (es. writeInt/writeLong o readInt/readLong, ecc...).
E comunque, pur sapendo a priori, che i file non sono grossi, leggere e scrivere l'intero file non è proprio il meglio che si può fare.
Idem come sopra. A meno che mi dimostri che hai bisogno di ObjectInputStream per altro, è del tutto inutile/superfluo usarlo per ricevere un byte[].Originariamente inviato da AtoXx
parte per ricevere
codice:ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); File file = new File(nome); byte[] pacchetto = null; // Ricevo il pacchetto dati try { pacchetto = (byte[]) ois.readObject(); } catch (Exception e) { System.err.println("Errore nel byte[]" + e.getMessage()); } // Lo scrivo nel file di destinazione FileOutputStream fos = new FileOutputStream(ricevuti + nome + ".xml"); fos.write(pacchetto); fos.close();
Hai scelto di usare la serializzazione per de-serializzare un byte[] ma solo perché come hai visto è "comodo" in quanto la serializzazione usa un suo "protocollo" e quindi "sa" ovviamente quanto e come leggere un array di byte. Ma sarebbe tutto qui.
Non è comunque così che programmerei io ....![]()

Rispondi quotando