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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
本人新马,基本学完才来逛论坛的,在做网络编程练习之客户端向服务器上传文件时发现自己写的代码运行起来没问题,本地路径能够判断成功,文件也能上传成功,
但我重复上传同一个文件的时候,却没有像老师的程序一样给我返回提示,大家帮忙看看,谢谢!
代码如下:
public class Test2_Client {

        /**
         * * 客户端向服务器上传文件
         *
         * @throws IOException
         * @throws UnknownHostException
         */
        public static void main(String[] args) throws UnknownHostException,
                        IOException {
                File file = getFile();

                Socket socket = new Socket("127.0.0.1", 11111);
                BufferedReader br = new BufferedReader(new InputStreamReader(
                                socket.getInputStream()));
                PrintStream ps = new PrintStream(socket.getOutputStream());
                ps.println(file.getName());
                String result = br.readLine();
                if ("存在".equals(result)) {
                        System.out.println("服务器上已存在该文件,请勿重复上传");
                        socket.close();
                        return;
                }

                FileInputStream fis = new FileInputStream(file);
                int len;
                byte[] arr = new byte[8192];
                while ((len = fis.read(arr)) != -1) {
                        ps.write(arr, 0, len);
                }

                fis.close();
                socket.close();
        }

        public static File getFile() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入将要上传的文件路径:");
                while (true) {
                        String line = sc.nextLine();
                        File file = new File(line);
                        if (!file.exists()) {
                                System.out.println("路径不存在,请重新输入");
                        } else if (file.isDirectory()) {
                                System.out.println("您输入的是文件夹路径,请重新输入");
                        } else {
                                return file;
                        }
                }
        }

}
---------------------------------------------------------------------------------------

public class Test2_Server {

        /**
         * * 客户端向服务器上传文件
         *
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                ServerSocket server = new ServerSocket(11111);
                System.out.println("服务器启动,绑定11111端口");

                while (true) {
                        final Socket socket = server.accept();
                        new Thread() {
                                public void run() {
                                        try {
                                                InputStream is = socket.getInputStream();
                                                BufferedReader br = new BufferedReader(
                                                                new InputStreamReader(is));
                                                PrintStream ps = new PrintStream(
                                                                socket.getOutputStream());
                                                String fileName = br.readLine();

                                                File dir = new File("update");
                                                dir.mkdir();
                                                File file = new File(dir, fileName);
                                                if (file.exists()) {
                                                        ps.println("已存在");
                                                        socket.close();
                                                        return;
                                                } else {
                                                        ps.println("不存在");
                                                }

                                                FileOutputStream fos = new FileOutputStream(file);
                                                int len;
                                                byte[] arr = new byte[8192];
                                                while ((len = is.read(arr)) != -1) {
                                                        fos.write(arr, 0, len);
                                                }
                                                fos.close();
                                                socket.close();
                                        } catch (IOException e) {

                                                e.printStackTrace();
                                        }
                                }
                        }.start();

                }

        }
}


7 个回复

倒序浏览
大兄弟,你服务器里面给客户端返回的是"已存在",客户端里面判断的是"存在",细心一点,把币给我谢谢0.0
回复 使用道具 举报
我真的太粗心了,感谢解答,不过给黑马币怎么操作啊
回复 使用道具 举报
278008379 来自手机 中级黑马 2016-3-23 12:27:33
板凳
已经很厉害了
回复 使用道具 举报
差得远了,大家共勉
回复 使用道具 举报
服务器里面给客户端返回的是"已存在",客户端里面判断的是"存在",建议编程经常Debug ,很有帮助,另外我需要黑马币
回复 使用道具 举报
adomwon 发表于 2016-3-23 08:19
我真的太粗心了,感谢解答,不过给黑马币怎么操作啊

大兄弟,好好研究研究怎么给黑马币吧,整过来一行行看的0.0
回复 使用道具 举报
管理员没划走,我也不能操作,不知道怎么弄的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马