学员作品 学员心得技术园地 潮人地 Android(安卓)培训 杭州电脑(计算机)培训 杭州网络营销培训 杭州JAVA培训
返回首页
当前位置: 主页 > 学员天地 > 技术园地 >

杭州Java培训之Java实现的网络文件传送

时间:2014-11-06 22:27来源:csdn 作者:niaopeng 点击:
杭州Java培训之Java实现的网络文件传送 FileUpload包下放了三个类: OpenAndSave.java TCPClient .java TCPServer.java

杭州Java培训之Java实现的网络文件传送

FileUpload包下放了三个类:

OpenAndSave.java

TCPClient .java
 

TCPServer.java


 

1、OpenAndSave.java

 

  1. package FileUpload;  
  2. import java.awt.*;  
  3. import javax.swing.*;  
  4. import java.util.*;  
  5. import java.io.*;  
  6. public class OpenAndSave extends JFrame {  
  7.       
  8.     // 选择打开文件  
  9.     public String getFile() {  
  10.         String fileName="";  
  11.         FileDialog fd = new FileDialog(this"请选择要传给zpc的文件", FileDialog.LOAD);  
  12.         fd.setDirectory("C:\\");  
  13.         fd.setVisible(true);  
  14.         // 获取此文件对话框选定的文件  
  15.         if (fd.getFile()!= null) {  
  16.             fileName=fd.getDirectory() + fd.getFile();  
  17.             System.out.println("已选择打开 " +fileName );  
  18.         }  
  19.         return fileName;  
  20.     }  
  21.   
  22.   
  23.     // 保存文件  
  24.     public OutputStream saveFile(String fileName) {  
  25.         OutputStream os=null;  
  26.         try {  
  27.             FileDialog fd = new FileDialog(this"保存文件", FileDialog.SAVE);  
  28.             // 对话框打开时显示默认的目录  
  29.             fd.setDirectory("C:\\");  
  30.             fd.setFile(fileName);  
  31.             fd.setVisible(true);  
  32.             if (fd.getFile() != null) {  
  33.                 File myFile = new File(fd.getDirectory(), fd.getFile());  
  34.                 os = new FileOutputStream(myFile);  
  35.             }  
  36.         } catch (IOException ioe) {  
  37.             JOptionPane.showMessageDialog(this"文件保存发生错误,已停止");  
  38.         }  
  39.         return os;  
  40.     }  
  41. }  

2、TCPServer.java

 

  1. /* 
  2.  * Author:zpc 
  3.  * Time:2014-5-1 
  4.  */  
  5. package FileUpload;  
  6. import java.io.*;  
  7. import java.net.*;  
  8. import java.util.Random;  
  9. import javax.swing.*;  
  10.   
  11. //每接受一个客户端请求单开一个线程处理  
  12. class UploadProcess implements Runnable {  
  13.     private Socket s;  
  14.   
  15.     public UploadProcess(Socket s) {  
  16.         this.s = s;  
  17.     }  
  18.   
  19.     public void run() {  
  20.         OutputStream fos = null;  
  21.         try {  
  22.             DataInputStream fis = new DataInputStream(s.getInputStream());// 和复制文件不同的是网络上传文件是从Socket中获取的I/O流对象  
  23.             String fileName = fis.readUTF();  
  24.             DataOutputStream fos1= new DataOutputStream(s.getOutputStream());//写回信息;  
  25.             if ((JOptionPane.showOptionDialog(null,  
  26.                     "您想接受文件" + fileName + "吗?""消息",  
  27.                     JOptionPane.YES_NO_OPTION, 0nullnullnull)) == 0) {  
  28.                 System.out.println("我已选择接受文件!");  
  29.                 String message1="服务器已接收!";  
  30.                 fos1.writeUTF(message1);  
  31.                 fos = new OpenAndSave().saveFile(fileName);  
  32.                 int len = 0;  
  33.                 byte[] bytes = new byte[1024];  
  34.                 if (fis != null) {  
  35.                     while ((len = fis.read(bytes)) != -1) {  
  36.                         fos.write(bytes, 0, len);  
  37.                     }  
  38.                 }  
  39.                 JOptionPane.showMessageDialog(null"文件保存成功!");  
  40.                 if (fis != null)  
  41.                     fis.close();  
  42.                 if (fos != null)  
  43.                     fos.close();  
  44.             }  
  45.             else {  
  46.                 System.out.println("我选择了拒绝接受!");  
  47.                 String message2="提示:对方已拒绝接受!";  
  48.                 fos1.writeUTF(message2);  
  49.             }  
  50.         } catch (Exception e) {  
  51.             System.out.println("接受文件失败!");  
  52.         }  
  53.     }  
  54. }  
  55.   
  56. public class TCPServer {  
  57.     public static void main(String[] args) throws IOException {  
  58.         // 建立服务器端的socket对象ServerSocket  
  59.         ServerSocket ss = new ServerSocket(10001);  
  60.         while (true) {  
  61.             Socket s = ss.accept();  
  62.             // 每个客户端的请求创建一个Socket对象,单开一个线程处理  
  63.             new Thread(new UploadProcess(s)).start();  
  64.         }  
  65.     }  
  66. }  


 

 

3、TCPClient .java

 

  1. /* 
  2.  * Author:zpc 
  3.  * Function:上传文件给用户zpc 
  4.  * Time:2014-5-1 
  5.  */  
  6. package FileUpload;  
  7. import java.io.*;  
  8. import java.net.*;  
  9. public class TCPClient {  
  10.     public static void main(String[] args) throws UnknownHostException{  
  11.         // 进行文件的读取.数据源  
  12.         OpenAndSave open = new OpenAndSave();  
  13.         String fileName = open.getFile();  
  14.         File myFile = new File(fileName);  
  15.         InputStream in = null;  
  16.         try {  
  17.             in = new FileInputStream(myFile);  
  18.         } catch (FileNotFoundException e1) {  
  19.             System.out.println("未选中文件!");  
  20.         }  
  21.         // 数据目的地是另一台主机,通过Socket获取I/O流  
  22.         if (in != null) {  
  23.             Socket s = null;  
  24.             try {  
  25.                 s = new Socket("127.0.0.1"10001);//这里写好目标机器IP地址和任意一个开放的未被其它程序占用的端口号  
  26.                 DataOutputStream os = new DataOutputStream(s.getOutputStream());  
  27.                 os.writeUTF(fileName);  
  28.                 byte[] b = new byte[1024];  
  29.                 int len = 0;  
  30.                 while ((len = in.read(b)) != -1) {  
  31.                     os.write(b, 0, len);  
  32.                 }  
  33.                 //System.out.println("message");  
  34.                 DataInputStream fis = new DataInputStream(s.getInputStream());  
  35.                 String message = fis.readUTF();  
  36.                 System.out.println(message);  
  37.                 if (os != null)  
  38.                     os.close();  
  39.                 if (in != null)  
  40.                     in.close();  
  41.             } catch (Exception e) {  
  42.                 System.out.println("貌似zpc不在线,稍后再传!!");  
  43.             }  
  44.         } else {  
  45.             System.out.println("文件读取失败(in = null)!");  
  46.         }  
  47.     }  
  48. }  


 

(责任编辑:杭州华育http://www.hzeduask.com ;java语言基础,php,安卓开发,it培训,详询客服报名咨询
分享到:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
提交报名信息

2017年杭州将加大力度经济转型,吸纳更多的技术人才落户杭州,软件人才需求量更是大幅提升,针对目前杭州IT行业人才需求“井喷”现象,华育软件杭州实训基地与杭州155家IT名企合作,建立人才培养与输送关系,启动“Eduask国家高端IT紧缺人才培养工程”。7月针对杭州地区18-28岁大中专生待业青年发放68个技能实训名额(应届大中专毕业生优先),经短期专业岗前实训后推荐进入企业,起薪4500-8000元,五险一金。

姓名: * 性别:
学历: 电话: *
所在地: *
您目前状况:
留言:
*