A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ImKing 于 2016-7-13 23:14 编辑
  1. public static void main(String[] args) throws UnknownHostException,
  2.                 IOException {
  3.         // 1.提示输入要上传的文件路径, 验证路径是否存在以及是否是文件夹
  4.         File file = getFile();
  5.         // 2.发送文件名到服务端
  6.         Socket socket = new Socket("127.0.0.1", 12345);
  7.         BufferedReader br = new BufferedReader(new InputStreamReader(
  8.                         socket.getInputStream()));
  9.         PrintStream ps = new PrintStream(socket.getOutputStream());
  10.         ps.println(file.getName());
  11.         // 6.接收结果, 如果存在给予提示, 程序直接退出
  12.         String result = br.readLine(); // 读取存在后不存在的结果
  13.         if ("存在".equals(result)) {
  14.                 System.out.println("您上传的文件已经存在,请不要重复上传");
  15.                 socket.close();
  16.                 return;
  17.         }
  18.         // 7.如果不存在, 定义FileInputStream读取文件, 写出到网络
  19.         FileInputStream fis = new FileInputStream(file);
  20.         byte[] arr = new byte[8192];
  21.         int len;

  22.         while ((len = fis.read(arr)) != -1) {
  23.                 ps.write(arr, 0, len);
  24.         }

  25.         fis.close();
  26.         socket.close();
  27. }
复制代码

代码分析:

(1)由于关闭此套接字也将会关闭该套接字的InputStream 和 OutputStream,所以main()方法中不必再手工关闭BufferedReader、PrintStream流对象(已与socket绑定)
(2)而文件流 FileInputStream :关闭此文件输入流并释放与此流有关的所有系统资源,则需要手动关闭

2 个回复

倒序浏览
谢谢分享~
回复 使用道具 举报
666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马