服务器模块的主要功能是对服务器中的文件执行新建、下载、重命名、删除、刷新等操作。比如当用户选取相应的文件再单击“下载”按钮,文件将会下载到本地硬盘中,如图2.12所示。
图2.12 服务器模块
本模块主要创建线程的实现方法,用于从服务器向本地磁盘下载文件。线程的具体实现方法是创建listFtpFiles 方法,此方法用于读取输入流中的 FTP 文件,将FTP 文件包装成FTPFile对象添加到表格中,具体代码如下:
当线程调用start()方法,Java虚拟机调用该线程的run方法使该线程开始执行。
首先编写 listFtpFiles()方法,该方法读取本地文件信息并添加到表格组件中。具体实现过程如下:首先读取FTP资源输入流中的数据,然后解析这些数据,读取FTP的资源列表信息,并将每一个FTP文件信息封装为FtpFile类的实例对象,将该对象添加到表格组件中。程序关键代码如下:
在表格组件的上方定义一个控制面板,它包括“删除”、“重命名”、“创建文件夹”、“刷新”和“下载”等按钮。“删除”按钮用于删除表格中选择的一个或多个文件与文件夹。实现该业务由DelFileAction动作类完成。程序关键代码如下:
只能删除空文件夹或者文件。
“重命名”按钮用于实现对表格中选择的一个FTP文件或文件夹的更名操作。实现该业务由 RenameAction动作类完成,它将被设置为本地的“重命名”按钮与“远程”菜单的“重命名”菜单项的Action属性。程序关键代码如下:
“创建文件夹”按钮,要求用户输入新的文件夹的名称,单击“确定”按钮后将在FTP 服务器上的当前路径建立该名称的文件夹。实现创建 FTP 文件夹的方法由CreateFolderAction类完成,该类继承了AbstractAction类,也是一个动作处理器类,它在动作事件处理方法中使用输入对话框接收用户输入的新文件夹的名称,在判断该文件夹名称没有被使用的情况下,创建新的文件夹然后刷新FTP服务器资源管理面板的文件列表。程序关键代码如下:
关键代码解析
1super(name, icon);为调用父类构造方法。
name属性:该属性表示动作名称。
icon属性:该属性表示动作图标。
“刷新”按钮,将重新装载 FTP 服务器当前文件夹的文件列表。在更改文件或文件夹的名称之后,需要执行刷新命令以显示最新的 FTP 服务器资源列表,否则,用户很难确定操作是否成功执行。实现刷新FTP服务器资源列表的方法由RefreshAction类实现,在该方法中调用了FTP资源管理面板的refreshCurrentFolder()方法,刷新本地资源的列表。程序关键代码如下:
“下载”按钮,将执行服务器文件到本地的下载的操作。该操作由DownAction动作处理器类完成,它继承了 AbstractAction 类,并重写了 actionPerformed()事件处理方法,在该方法中获取了 FTP 资源管理面板的表格组件中当前选择的所有文件或文件夹,然后为每个FTP文件信息创建FtpFile类的对象,并获取本地资源管理面板当前路径的File类对象,将这两个对象声明到一个数组中作为一个下载任务添加到下载队列中。这个队列将被文件下载线程调用。程序关键代码如下: