本帖最后由 ImKing 于 2016-7-13 23:14 编辑
- public static void main(String[] args) throws UnknownHostException,
- IOException {
- // 1.提示输入要上传的文件路径, 验证路径是否存在以及是否是文件夹
- File file = getFile();
- // 2.发送文件名到服务端
- Socket socket = new Socket("127.0.0.1", 12345);
- BufferedReader br = new BufferedReader(new InputStreamReader(
- socket.getInputStream()));
- PrintStream ps = new PrintStream(socket.getOutputStream());
- ps.println(file.getName());
- // 6.接收结果, 如果存在给予提示, 程序直接退出
- String result = br.readLine(); // 读取存在后不存在的结果
- if ("存在".equals(result)) {
- System.out.println("您上传的文件已经存在,请不要重复上传");
- socket.close();
- return;
- }
- // 7.如果不存在, 定义FileInputStream读取文件, 写出到网络
- FileInputStream fis = new FileInputStream(file);
- byte[] arr = new byte[8192];
- int len;
- while ((len = fis.read(arr)) != -1) {
- ps.write(arr, 0, len);
- }
- fis.close();
- socket.close();
- }
复制代码
代码分析:
(1)由于关闭此套接字也将会关闭该套接字的InputStream 和 OutputStream,所以main()方法中不必再手工关闭BufferedReader、PrintStream流对象(已与socket绑定)
(2)而文件流 FileInputStream :关闭此文件输入流并释放与此流有关的所有系统资源,则需要手动关闭
|
|