日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java文件传输

發(fā)布時(shí)間:2024/9/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java文件传输 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

200792102.jpg 200792103.jpg
文件接收部分
FileReceiver.java
package com.vista.Util;
import java.io.IOException; import java.net.ServerSocket;
public class FileReceiver ?extends Thread { private ServerSocket s = null; ? ? private int FILE_PORT ;//文件傳輸?shù)谋O(jiān)聽(tīng)端口 private User user = null; public ?FileReceiver(User us) { this.FILE_PORT = us.getUdpPort();//設(shè)置文件端口 this.user=us; } public void run() { try { s = new ServerSocket(FILE_PORT); System.out.println("用戶(hù)端開(kāi)始監(jiān)聽(tīng):"+s); while(true) { java.net.Socket ?socket = s.accept(); System.out.println("連接接受"+socket); new FileReceiverThread(user,socket); } } catch(IOException e) { e.printStackTrace(); } catch(java.lang.Exception ex) { System.err.println(ex.getMessage().toString()); ex.printStackTrace(); } finally { try? { s.close(); }? catch (IOException e)? { // TODO Auto-generated catch block e.printStackTrace(); } } ? ? }
}
FileReceiverThread.java package com.vista.Util;
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.util.Date;
import com.vista.Form.SingleChatForm;
public class FileReceiverThread extends Thread { private SingleChatForm chatForm = null; private java.net.Socket socket = null; private java.io.InputStream in = null;//從客戶(hù)端讀數(shù)據(jù)的 private java.io.PrintWriter out = null;//向客戶(hù)端寫(xiě)數(shù)據(jù) private String serverMsg; private User sender =null; private User receiver =null; private com.vista.Util.Sender MsgSender = null;
public FileReceiverThread (User us,Socket socket) { this.receiver=us; try? { this.socket = socket; this.in = this.socket.getInputStream(); this.out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream())),true); }? catch (IOException e)? {// TODO Auto-generated catch block e.printStackTrace(); } this.start();//啟動(dòng)線(xiàn)程 }
public void run() { String info ?= ""; try { ? ? ? while(true) ?? { ?? //第一個(gè)參數(shù)為命令 ?? Date befor = new Date(); byte cmd[] = new byte[128]; ?? int b = 0; ?? while(b<cmd.length) {? b += in.read(cmd, b, cmd.length-b); ?? } ?? int ends = 0; ?? for(int i=0;i<cmd.length;i++) { if(cmd[i]==-0) { ?? ends = i; ?? break; ?? } ?? } ?? String cmds = new String(cmd,0,ends); ?? if("cp".equals(cmds)) { ?? byte[] filename = new byte[256]; ?? b = 0; ?? while(b<cmd.length) {? b += in.read(filename, b, filename.length-b); ?? } ?? ends = 0; ?? for(int i=0;i<cmd.length;i++) {? if(filename[i]==-0) { ?? ends = i; ?? break; ?? } ?? } ?? String filenames = new String(filename,0,ends); filenames = "F://"+filenames; File fileout = new File(filenames); ??
FileOutputStream fos = new FileOutputStream(fileout); ?? byte[] filesize = new byte[64]; ?? b = 0; ?? while(b<filesize.length) {? b += in.read(filesize, b, filesize.length-b); ?? } ?? ends = 0; ?? for(int i=0;i<filesize.length;i++) { if(filesize[i]==-0) { ?? ends = i; ?? break; ?? } ?? } ?? String filesizes = new String(filesize,0,ends); ?? System.out.println("filesize:"+filesizes); ?? int ta = Integer.parseInt(filesizes); ?? byte[] buf = new byte[1024*10]; ?? while(true) { ?? if(ta==0) { ?? break; ?? } ?? int len = ta; ?? if(len>buf.length) { ?? len = buf.length; ?? } ?? int rlen = in.read(buf, 0, len); ??
ta -= rlen; ?? if(rlen>0) { ?? fos.write(buf,0,rlen); ?? fos.flush(); ?? } ?? else { ?? break; ?? } ?? } ?? Date after = new Date(); long diff =after.getTime() - befor.getTime(); diff /=1000;
info = "傳輸完成!文件已經(jīng)保存到:"+filenames+",文件大小:"+filesizes+"字節(jié),"+"共用時(shí)間:"+diff+"秒"; int result = javax.swing.JOptionPane.showConfirmDialog(null, info, "文件傳輸", ?javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.INFORMATION_MESSAGE); fos.close();? break; ?? } ?? } ?? //socket.close(); ?? } catch(Exception e) { e.printStackTrace(); ?? } ?? try? { this.socket.close(); }? catch (IOException ex1) { } } }
文件發(fā)送線(xiàn)程 FileSender.java package com.vista.Util;
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;
public class FileSender extends Thread { private Socket socket = null;//客戶(hù)端socket private OutputStream out = null;//向服務(wù)器寫(xiě)數(shù)據(jù) private int RECEIVER_PORT = -1;//接收者端口 private File fileToSend = null;//要傳輸?shù)奈募? public FileSender(File file,int Receiver_Port) { this.fileToSend = file; this.RECEIVER_PORT = Receiver_Port;//設(shè)置接收方端口 try? { this.socket = new Socket(InetAddress.getLocalHost(),RECEIVER_PORT); out = socket.getOutputStream();//向接收者發(fā)數(shù)據(jù)的 }? catch (UnknownHostException e)? { // TODO Auto-generated catch block e.printStackTrace(); }? catch (IOException e)? { // TODO Auto-generated catch block e.printStackTrace(); } }
public void run() { byte[] cmd = new byte[128]; byte[] tcmd = "cp".getBytes(); for(int i=0;i<tcmd.length;i++) { cmd[i] = tcmd[i]; ?? } ?? cmd[tcmd.length] = -0; ?? try? { out.write(cmd,0,cmd.length); }? catch (IOException e) { e.printStackTrace(); } ?? //文件名 ?? byte[] file = new byte[256]; ?? byte[] tfile = this.fileToSend.getName().getBytes(); ?? for(int i=0;i<tfile.length;i++) { file[i] = tfile[i]; ?? } ?? file[tfile.length] = -0; ?? try? { out.write(file,0,file.length); }? catch (IOException e)? { e.printStackTrace(); } ? ? ? ? ? //大小 ? ? ? byte[] size = new byte[64]; ?? byte[] tsize = (""+this.fileToSend.length()).getBytes(); ?? for(int i=0;i<tsize.length;i++) {? size[i] = tsize[i]; ?? } ?? size[tsize.length] = -0; ?? try? { out.write(size,0,size.length); }? catch (IOException e)? { // TODO Auto-generated catch block e.printStackTrace(); } ?? FileInputStream fis = null; ?? byte[] buf = new byte[1024*10]; ? ? try? { fis = new FileInputStream(this.fileToSend); }? catch (FileNotFoundException e)? { e.printStackTrace(); } ?? int readsize = 0; ? ? try? { while((readsize = fis.read(buf, 0, buf.length))>0) { ?? out.write(buf,0,readsize); ?? out.flush(); ? } }? catch (IOException e) { e.printStackTrace(); } ??
}
}

本文轉(zhuǎn)自Phinecos(洞庭散人)博客園博客,原文鏈接:http://www.cnblogs.com/phinecos/archive/2007/09/21/902016.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的java文件传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。