鉴于大家对Java类作品十分关注,我们编辑小组在此为大家搜集整理了“JAVA客户端软件的设计”一文,供大家参考学习
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.4文件下载和上传程序 通过浏览程序对FTP服务器和本地文件系统的浏览,解决了客户端和服务器端的文件和目录选择的问题,但是文件数据是需要传送和交换的,下面我们将介绍如何实现文件的下载和上传等操作过程。 4.4.1文件下载程序 当我们想下载文件,可以使用TelnetInputStream流,并使用FTPClient控件的get方法将流的源头绑定,再将TelnetInputStream流绑定到DataInputStream流中,然后再在本地新建一个文件,并绑定到RandomAccessFile流中,执行DataInputStream流的读并写入RandomAccessFile流中,就可以完成下载功能了。 当然,程序首先需要判断本地浏览框中选中的是目录还是文件,或者根本就没有在本地浏览框中选择。为了可同时选择多个文件下载,必须先设置list1控件的MultipleMode属性为true,以便能够在远程浏览框中进行多重选择。 接着在程序中利用list1控件对象的getSelectedItems方法获取所选择的文件和目录,并判断是否为目录;若是目录,则在本地创建一个目录(本实例没有使用递归的方法,所以不能下载目录中的文件和子目录),否则,将进行文件下载。一直重复至所有被选择文件或者目录都被完成操作为止。在这里,使用了一个isfile的boolean变量用于判断是否为文件。 4.4.2文件上传程序 上传文件基本上与下载文件类似,不过使用的是TelnetOutputStream流,并使用FTPClient控件的put方法和流绑定,再将TelnetOutputStream流绑定到DataOutputStream流中,然后在本地新建一个文件,并绑定到RandomAccessFile流中,执行RandomAccessFile流的读并写入DataOutputStream流中,就可以完成上传功能了。代码如下: // 上传文件到ftp目录 void jButton3_actionPerformed(ActionEvent e) { //上传文件到ftp服务器中 if(jTree1.isSelectionEmpty() ){ jTextArea1.append("没有选择本地文件上载\n"); }else{ File file1=new File(conPath()); //判断是否是文件,如果是目录则不与操作,以后的程序可能会考虑添加目录的操作 if(file1.isFile()){ String filename=jTree1.getSelectionPath().getLastPathComponent().toString(); int ch; try { File localFile = new File(conPath() ); RandomAccessFile sendFile = new RandomAccessFile( conPath() , "r"); //上传文件到ftp服务器中 sendFile.seek(0); TelnetOutputStream outs = ftp.put(filename); DataOutputStream outputs = new DataOutputStream(outs); //上传处理 while (sendFile.getFilePointer() < sendFile.length()) { ch = sendFile.read(); outputs.write(ch); } //上传完成,关闭输入输出流 outs.close(); sendFile.close(); } catch (IOException ex) { ex.printStackTrace(); } //列表框需要重新刷新 ReloadList(); } } } 图10 上传与下载 5 系统测试及问题处理 5.1测试环境 系统测试机器: CPU: AMD Athlon 2500+ MAINBOARD: Epox 8RDA3+ MEMORY: Kingston DDR 768M HARDDISK: WESTDIGITAL 120JB 程序测试环境: Windows XP SP2 Windows Server 2003 Jbuilder 9 JRE 1.4 Serv-U v6.4.0.2 5.2 测试结果 在本地系统安装FTP服务器端软件Serv-U,用于提供FTP服务,IP地址127.0.0.1,端口号使用默认端口21。创建FTP登录帐号,分配适当的权限。(Serv-U的安装和配置过程略过,可见该软件帮助文件。) 5.2.1登录模块测试 主要是利用FtpClient控件实现FTP客户端应用程序的登录功能。要登录FTP服务器,输入合法的用户帐号和密码,如是匿名登录用户帐号为Anonymous,密码一般为空。 详细设置参数: hostname:服务器的IP地址或主机名称,为字符串类型; port: 服务器的通信端口,为int类型(FTP端口默认为21); username:用户的登录账号; password:用户的登录密码; 这次毕业设计遇到的难点就是:连接到FTP服务器上,可以浏览它的内容,但不能识别文件夹。此问题后来通过使用搜索、BBS上发贴请教,最后算是顺利解决如何判断文件和目录。 5.2.2系统兼容性测试 经测试,该系统在WINDOWS 2003以及WINDOWS XP下均能正常工作。 5.3 测试总结 系统在上述软硬件环境下作出测试,结果基本能够达到预期功能,满足用户的基本的登录服务器,上传下载数据的需求。并且系统在Windows平台上经测试能够稳定的运行。 其中应注意几点,如:1.测试时最好将防火墙关闭或者降低安全级别; 2.登录帐号一定要是合法注册的,并在服务器端设置好正确的用户权限。否则就可能无法正常连接到服务器,上传下载数据。 不足之处在于上传下载过程中无法得知过程进度、剩余时间等信息,对用户上传较大文件时会造成一定的不方便。能加入断点传输的话更佳,由于ftpclient不自带断点传送功能,如今后该系统增加此功能会比较困难。 总的来说,测试内容较少,可能会存在一些BUG,与现实生活中大家使用的那些FTP下载软件有相当的距离。对此,还更应该的深入的学习Java语言中的那多重要的类库,更全面的了解他们的功能,争取完善其功能。 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |