Questo è un pezzo della parte Client di un programmino java per inviare file... [scusate la formattazione]
Ma funziona solo per i file di testo (non per immagini, file audio...)
Ho provato ad usare FileInputStream ma niente da fare...
I file (non di testo) che invia hanno la stessa dimensione solo che all'interno alcuni byte risultano diversi, ecco perchè il file inviato risulta non funzionante.
Come posso risolvere?
questa è la relativa parte Servercodice:public void run() { Socket echoSocket = null; PrintWriter out = null; // BufferedReader in = null; InputStream in = null; FileOutputStream out_f = null; // long dim2=0; int port = Integer.parseInt(Tporta); try { echoSocket = new Socket(ip, port); out = new PrintWriter(echoSocket.getOutputStream(), true); // in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); in = echoSocket.getInputStream(); } catch (UnknownHostException e) { System.err.println("Non conosco l'host"); System.exit(1); } catch (IOException e) { System.err.println("Non posso ottenere I/O per la connessione con: localhost"); System.exit(1); } out.println(filename); out.flush(); File outputFile = new File(shareFolder + "//" + "_INCOMPLETE_" + filenew); File overFile = new File(shareFolder + "//" + filenew); try { out_f = new FileOutputStream(outputFile); //dim2 =Long.parseLong(in.readLine()); // dim2 =in.read(); } catch (IOException e) { e.printStackTrace(); } vecchio.setText(nuovo.getText()); nuovo.setText("Download del file: " + filenew + " : " + dim); try { //for(int k=0; k<dim2; k++) // out_f.write(in.read()); int c; while ((c=in.read())!=-1) { out_f.write(c); } } catch (IOException e) { e.printStackTrace(); } try { out_f.close(); out.close(); in.close(); echoSocket.close(); } catch (IOException e) { e.printStackTrace(); }
grazie a tutticodice:public void run(){ try { InputStream i = client.getInputStream(); OutputStream o = client.getOutputStream(); in = new BufferedReader(new InputStreamReader(i)); output = new PrintWriter(o); String s = null; s = shareFolder + "\\" + in.readLine(); System.out.println(s); File inputFile = new File(s); FileInputStream in_f = new FileInputStream(inputFile); int c; while ((c = in_f.read()) != -1 ) { output.write(c); output.flush();} //long dim = inputFile.length(); //output.println(dim); output.flush(); // for(int k=0; k<inputFile.length(); k++){ // output.write(in_f.read()); // output.flush(); // } in_f.close(); } catch (Exception e) { System.out.println("Errore"); System.exit(1); } finally { System.out.println ("Connessione chiusa"); try { client.close(); } catch (Exception e) { System.exit(1); } } } }

Rispondi quotando