黑马程序员技术交流社区

标题: 客户端向服务器上传文件 [打印本页]

作者: Demo_黑马    时间: 2016-5-27 22:07
标题: 客户端向服务器上传文件
     今天学了一个超级吊的网络编程项目,直接听课听萌比了。。。下面是源码:
  1. package com.heima.test;

  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.PrintStream;
  8. import java.net.Socket;
  9. import java.net.UnknownHostException;
  10. import java.util.Scanner;

  11. public class Test2_UpdateClient {

  12.         /**
  13.          * @param args
  14.          * @throws IOException
  15.          * @throws UnknownHostException
  16.          */
  17.         public static void main(String[] args) throws UnknownHostException, IOException {
  18.                 // 1.提示输入要上传的文件路径, 验证路径是否存在以及是否是文件夹
  19.                 File file = getFile();
  20.                 // 2.发送文件名到服务端
  21.                 Socket socket = new Socket("127.0.0.1", 12345);
  22.                 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  23.                 PrintStream ps = new PrintStream(socket.getOutputStream());
  24.                 ps.println(file.getName());
  25.                 // 6.接收结果, 如果存在给予提示, 程序直接退出
  26.                 String result = br.readLine();                                                //读取存在或不存在的结果
  27.                 if("存在".equals(result)) {
  28.                         System.out.println("您上传的文件已经存在,请不要重复上传");
  29.                         socket.close();
  30.                         return;
  31.                 }
  32.                 // 7.如果不存在, 定义FileInputStream读取文件, 写出到网络
  33.                 FileInputStream fis = new FileInputStream(file);
  34.                 byte[] arr = new byte[8192];
  35.                 int len;
  36.                
  37.                 while((len = fis.read(arr)) != -1) {
  38.                         ps.write(arr, 0, len);
  39.                 }
  40.                
  41.                 fis.close();
  42.                 socket.close();
  43.         }

  44.         private static File getFile() {
  45.                 Scanner sc = new Scanner(System.in);                                //创建键盘录入对象
  46.                 System.out.println("请输入一个文件路径:");
  47.                
  48.                 while(true) {
  49.                         String line = sc.nextLine();
  50.                         File file = new File(line);
  51.                        
  52.                         if(!file.exists()) {
  53.                                 System.out.println("您录入的文件路径不存在,请重新录入:");
  54.                         }else if(file.isDirectory()) {
  55.                                 System.out.println("您录入的是文件夹路径,请输入一个文件路径:");
  56.                         }else {
  57.                                 return file;
  58.                         }
  59.                 }
  60.         }
  61. }
复制代码




作者: lifeiwangyue    时间: 2016-5-27 22:33
我们没有验证文件的是否存在,简化了好多
作者: sunweipan    时间: 2016-5-27 22:37
不明觉厉     慢慢学  一定会搞明白的




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