FileUpload

 FileUpload包下放了三个类:

  OpenAndSave.java

  TCPClient .java

  TCPServer.java

  1、OpenAndSave.java

  package FileUpload;

  import java.awt.*;

  import javax.swing.*;

  import java.util.*;

  import java.io.*;

  public class OpenAndSave extends JFrame {

  // 选择打开文件

  public String getFile() {

  String fileName="";

  FileDialog fd = new FileDialog(this, "请选择要传给zpc的文件", FileDialog.LOAD);

  fd.setDirectory("C:\\");

  fd.setVisible(true);

  // 获取此文件对话框选定的文件

  if (fd.getFile()!= null) {

  fileName=fd.getDirectory() + fd.getFile();

  System.out.println("已选择打开 " +fileName );

  }

  return fileName;

  }

  // 保存文件

  public OutputStream saveFile(String fileName) {

  OutputStream os=null;

  try {

  FileDialog fd = new FileDialog(this, "保存文件", FileDialog.SAVE);

  // 对话框打开时显示默认的目录

  fd.setDirectory("C:\\");

  fd.setFile(fileName);

  fd.setVisible(true);

  if (fd.getFile() != null) {

  File myFile = new File(fd.getDirectory(), fd.getFile());

  os = new FileOutputStream(myFile);

  }

  } catch (IOException ioe) {

  JOptionPane.showMessageDialog(this, "文件保存发生错误,已停止");

  }

  return os;

  }

  }

  2、TCPServer.java

  /*

  * Author:zpc

  * Time:2014-5-1

  */

  package FileUpload;

  import java.io.*;

  import java.net.*;

  import java.util.Random;

  import javax.swing.*;

  //每接受一个客户端请求单开一个线程处理

  class UploadProcess implements Runnable {

  private Socket s;

  public UploadProcess(Socket s) {

  this.s = s;

  }

  public void run() {

  OutputStream fos = null;

  try {

  DataInputStream fis = new DataInputStream(s.getInputStream());// 和复制文件不同的是网络上传文件是从Socket中获取的I/O流对象

  String fileName = fis.readUTF();

  DataOutputStream fos1= new DataOutputStream(s.getOutputStream());//写回信息;

  if ((JOptionPane.showOptionDialog(null,

  "您想接受文件" + fileName + "吗?", "消息",

  JOptionPane.YES_NO_OPTION, 0, null, null, null)) == 0) {

  System.out.println("我已选择接受文件!");

  String message1="已接收!";

  fos1.writeUTF(message1);

  fos = new OpenAndSave()。saveFile(fileName);

  int len = 0;

  byte[] bytes = new byte[1024];

  if (fis != null) {

  while ((len = fis.read(bytes)) != -1) {

  fos.write(bytes, 0, len);

  }

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值