黑马程序员技术交流社区

标题: 什么时候需要关闭流,什么时候不需要积累 [打印本页]

作者: ImKing    时间: 2016-7-13 23:08
标题: 什么时候需要关闭流,什么时候不需要积累
本帖最后由 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 :关闭此文件输入流并释放与此流有关的所有系统资源,则需要手动关闭


作者: 地狱蓝枫    时间: 2016-7-14 21:08
谢谢分享~
作者: 呆呆的小呆    时间: 2016-7-14 21:48
666666666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2