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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用一个socket也是可以的,你可以在socket端先把文件名发过去,然后在发文件内容。
                                            File file=new File("file.txt");//要传输的文件
                        Socket s=new Socket(port, 10008);
                        PrintWriter out1=new PrintWriter(s.getOutputStream(), true);
                        BufferedReader buffile=new BufferedReader(new FileReader(file));
                        //把文件进行上传
                    out1.println(file.getName());//先把文件名发送过去
                    String line=null;//定义一个变量接收文本数据的一行
                    while((line=buffile.readLine())!=null){
                            out1.println(line);//socket输出流开始发送文本数据
                    }
                    s.shutdownOutput();
                   // out1.flush();//清除缓存
                  //关闭文件读取流
                 buffile.close();//关闭文本读取流
回复 使用道具 举报
本帖最后由 李楠 于 2011-12-29 10:12 编辑

如题,怎么才能接收到后缀呢?
另开一个Socket吗?能不能在一个Socket里实现呢?

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

6 个回复

倒序浏览
当然用一个socket就能实现,那就是把文件对象用ObjectOutputStream流写到服务器端去,在服务器端接收时就用ObjectInputStream得到这个file对象,这样文件的所有信息都有了,包括内容和文件名。
如果还不明白我再把代码贴出来。
回复 使用道具 举报
李楠 黑马帝 2011-12-28 17:48:29
板凳
侯伟浩 发表于 2011-12-28 16:13
当然用一个socket就能实现,那就是把文件对象用ObjectOutputStream流写到服务器端去,在服务器端接收时就用 ...

用一个流的话,穿过过去的只有文件啊,还要自己构建文件名字。文件名是如果传递的呢?
回复 使用道具 举报
传过去的是文件对象!是个对象!就用file.getName()得到了文件名了,再split("\\.")取最后一个,不就得到文件的扩展名了吗!

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
我想问提问题的楼主的是,你传送一个文件是在jsp页面里传送还是纯用java写的。如果是纯java语言写,我也不会,但是如果你在jsp页面的向服务器传送文件,我倒是可以帮助您
回复 使用道具 举报
李楠 黑马帝 2011-12-29 10:12:11
7#
谢谢大家,我已经搞定了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马