Newsgroup: it.comp.java
Titolo: Spedire un'immagine attraverso un socket

Salve a tutti,
	sto cercando di spedire un'immagine attraverso un socket; il client 
seleziona un file e lo trasferisce al server, il quale a sua volta 
dovrebbe creare una copia locale sul suo disco.
Ho un oggetto File contenente l'immagine. Sono riuscito a ottenere un 
array di byte del file immagine; riesco a trasferire l'array di byte 
correttamente ma ora ho la necessità di creare fisicamente un file sul 
disco del server. Vorrei sapere come e se è possibile creare un file su 
disco a partire da un byte[].
Grazie
ciao
-- 
+------------------------------------------+
  Libero Spagnolini
  E-mail: 
lspag...@iago.polito.it
  Fara Novarese 28073 - NO
  Italy
+------------------------------------------+
  She is the insta-cure, she could cheer up
  Nick Drake. And he's dead.
	                        Adam Duritz
+------------------------------------------+

 wrote in message
news:2jvqp7F...@uni-berlin.de...


 disco a partire da un byte[].
java.util.ByteArrayInputStream

Cristiano Sadun <cristiano...@THIShotmailOUT.com> wrote in
news:Xns95128BA7146FAcr...@130.133.1.4
: 

Pardon, 
java.io

 disco a partire da un byte[].
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html#write(byte[])

Grazie a tutti per i consigli, ho risolto per spedire l'immagine:
Socket s = new Socket(InetAddress.getByName(host), port);
byte[] iBytes = getBytesFromFile(image);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.write(iBytes);
e per riceverla:
try {
             ServerSocket s = new ServerSocket(5000);
             while (true) {
                 Socket accept = s.accept();
                 File outputFile = new File("pippo.jpg");
                 InputStream is = accept.getInputStream();
                 FileOutputStream fos = new FileOutputStream(outputFile);
                 DataInputStream dis = new DataInputStream(is);
                 int c;
                 while ((c = dis.read()) != -1)
                     fos.write(c);
                 fos.close();
             }
         } catch (IOException e) {
             e.printStackTrace();
	}
    public static byte[] getBytesFromFile(File file) throws IOException {
         InputStream is = new FileInputStream(file);
         // Get the size of the file
         long length = file.length();
         // You cannot create an array using a long type.
         // It needs to be an int type.
         // Before converting to an int type, check
         // to ensure that file is not larger than Integer.MAX_VALUE.
         if (length > Integer.MAX_VALUE) {
             // File is too large
         }
         // Create the byte array to hold the data
         byte[] bytes = new byte[(int)length];
         // Read in the bytes
         int offset = 0;
         int numRead = 0;
         while (offset < bytes.length
                 && (numRead=is.read(bytes, offset, 
bytes.length-offset)) >= 0) {
             offset += numRead;
         }
         // Ensure all the bytes have been read in
         if (offset < bytes.length) {
             throw new IOException("Could not completely read file 
"+file.getName());
         }
         // Close the input stream and return bytes
         is.close();
         return bytes;
