大家好!这几天在写一个网络文件传输软件(类似一个FTP软件,用户连接到服务器后可以查看\下载\上传文件),遇到几个棘手问题,苦思冥想不得其解,请高手赐教~!!
问题不太好描述,我尽量写得详细些,希望大家能看明白.问题1: (如何实现类似于FlashFXP软件右边的文件列表)
   用户要查看服务器上某目录下面的文件信息,服务器将该目录下的文件信息以某种方式发到客户端,假设现在客户端已经收到了文件信息并存放在某一中数据结构中(数组或集合等等),这时候要在客户端显示出来这些文件列表信息.就像在Windows系统上打开某个文件夹时能够看到该目录下的所有文件和子文件夹信息一样,我要用JAVA编写一个界面,使用用户可以看到文件信息,并且可以用鼠标选择其中的一个或多个进行下载,这个界面就仿佛FlashFXP这个软件的右边一栏,显示文件列表的那一栏一样,而且要求文件夹与普通文件的前面要有不同的图标做为区别....
现在问题是我该用哪个JAVA控件?? JList ? JTable? 不管使用哪个控件,关键是要满足个要求:
1.可以进行单个或多个选择,而且多个选择时最好不用CTRL+单击,而是鼠标拖选.
2.选中的项目可以响应鼠标右键,便于"下载\删除\该名"操作.
3.目录和文件前面要有不同的图标做区别.不同的文件格式可以全部采用一种图标.这个不要紧.最好给出明确思路,或简练的能说明问题的代码.
问题2:(部分细节)
  1)服务器端向客户端发送某文件夹下的文件信息时,如何发送为好?我现在打算用循环将每个文件信息整理成一条字符串发送到客户端.如"file|a.txt|12305|2006-5-5",分别表示类型\文件名\大小\最后修改时间.到了客户端再进行分离.请问是否可以有更高效的办法?
这个问题不知道算不算非常困难.我觉得是已经相当复杂了....各位高手如果不能给出周全的答复,给点自己的思路也行,不管可行不可行,都可以提出来,集思广益,谢谢各位了!

解决方案 »

  1.   

    其实你实现的只是一个FTP的客户端软件,在文件传输方面可以采用apache commons的net开源项目,该项目集成了丰富的FTP操作封装。至于在界面方面的控制我使用的是SWT,在列表显示方面我使用TableViewer组件,它可以完成你所说的所有功能,我曾经用SWT做过一个在线版本升级的东东,类似与杀毒软件的在线升级。其中使用的就是这些技术,比如,FTP传输文件,多线程显示完成进度,更换状态图标等。我觉得和你要实现的功能差不多。
      

  2.   

    感谢jacktan(贫僧法号[梦遗]) 的关注我这个东西,功能完全是一个FTP软件的功能,不过服务器端和客户端不是采用的FTP协议,而是自己定义了一套通信命令.我写这个软件打算放在自己的一台网页服务器上使用.使用FTP协议或者第三方代码怕有安全隐患,所以计划用JAVA写一个类似FTP软件的东西,代码全自己来写,也不公开给别人,安全性应该比较高. 以前学过一段时间JAVA,不过没有深入研究过GUI,所以写起来相当费劲.文件传输方面,我想自己来写,无非就是读取文件流,写入到SOCKET,然后接收文件流,写入到文件等这样的操作,估计不是很难.我现在刚写完一部分服务器端界面,写完了了户登陆验证\线程分配\用户管理等服务器端部分代码,正要开始写文件传输的部分,但是由于客户端显示文件列表的问题,给阻挡住了,前进不了了.......我现在用 IntelliJ Idea写代码,GUI设计就用布局管理器慢慢鼓捣...SWT很惭愧没有用过,我写这个小软件另外一个重要目的就是让自己再好好熟悉一下JAVA,以前学的快忘光了,所以才尽量不用现成的第三方类库或者可视化界面设计工具.非常感谢你的推荐,也希望以后能继续交流.关于你说的TableViewer组件,我以前没接触过,这会正看Java doc,刚开始学真有点头晕,如果你有比较现成的代码,万望可以提供一二,简单明了可以说明问题就好!谢谢了~!
      

  3.   

    你所说得安全方面得考虑和用什么协议是没有关系的,如果需要安全方面的考虑,需要自己对传输数据进行加密,比如DES,RAS等。