Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)
本文为大家分享了ftp本地文件管理模块的实现方法,供大家参考,具体内容如下
首先看一下界面:
1、本地文件列表的显示功能
将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名、大小、日期、通过javax.swing.jtable()来显示具体的数据。更改当前文件目录会调用com.oyp.ftp.panel.local.localpanel类的listlocalfiles()方法,其主要代码如下
/** * 读取本地文件到表格的方法 */ private void listlocalfiles(file seldisk) { if (seldisk == null || seldisk.isfile()) { return; } localselfilepathlabel.settext(seldisk.getabsolutepath()); file[] listfiles = seldisk.listfiles(); // 获取磁盘文件列表 // 获取表格的数据模型 defaulttablemodel model = (defaulttablemodel) localdisktable.getmodel(); model.setrowcount(0); // 清除模型的内容 model.addrow(new object[] { ".", "<dir>", "" }); // 创建.选项 model.addrow(new object[] { "..", "<dir>", "" }); // 创建..选项 if (listfiles == null) { joptionpane.showmessagedialog(this, "该磁盘无法访问"); return; } // 遍历磁盘根文件夹的内容,添加到表格中 for (file file : listfiles) { file diskfile = new diskfile(file); // 创建文件对象 string length = file.length() + "b "; // 获取文件大小 if (file.length() > 1000 * 1000 * 1000) { // 计算文件g单位 length = file.length() / 1000000000 + "g "; } if (file.length() > 1000 * 1000) { // 计算文件m单位 length = file.length() / 1000000 + "m "; } if (file.length() > 1000) { length = file.length() / 1000 + "k "; // 计算文件k单位 } if (file.isdirectory()) { // 显示文件夹标志 length = "<dir>"; } // 获取文件的最后修改日期 string modifdate = new date(file.lastmodified()).tolocalestring(); if (!file.canread()) { length = "未知"; modifdate = "未知"; } // 将单个文件的信息添加到表格的数据模型中 model.addrow(new object[] { diskfile, length, modifdate }); } localdisktable.clearselection(); // 取消表格的选择项 }
2、本地文件列表的刷新功能
点击“刷新”按钮,会触发com.oyp.ftp.panel.local.refreshaction类的actionperformed(actionevent e)方法,其主要代码如下
/** * 刷新本地资源列表的动作处理器的事件处理方法 */ @override public void actionperformed(actionevent e) { this.localpanel.refreshcurrentfolder(); // 调用管理面板的刷新方法 }
上面的响应事件会调用com.oyp.ftp.panel.local.localpanel类的refreshcurrentfolder()方法,其具体代码如下
/** * 刷新指定文件夹的方法 */ void refreshfolder(file file) { listlocalfiles(file); } /** * 刷新本地当前文件夹的方法 */ public void refreshcurrentfolder() { final file file = getcurrentfolder(); // 获取当前文件夹 runnable runnable = new runnable() { // 创建新的线程 public void run() { listlocalfiles(file); // 重载当前文件夹的列表到表格中 } }; //导致 runnable 的 run 方法在 eventqueue 的指派线程上被调用。 swingutilities.invokelater(runnable); // 在事件线程中调用该线程对象 }
3、 新建本地文件夹功能
点击“新建文件夹”按钮,会触发com.oyp.ftp.panel.local.createfolderaction类的actionperformed(actionevent e)方法,然后弹出一个对话框,填写要新建的文件夹名称,选择“确定”,“取消”按钮结束。其主要代码如下
/** * 创建文件夹按钮的动作处理器的动作事件的方法 */ @override public void actionperformed(actionevent e) { // 使用输入对话框接收用户输入的文件夹名称 string foldername = joptionpane.showinputdialog("请输入文件夹名称:"); if (foldername == null) return; file curfolder = null; // 获取本地资源表格的当前选择行号 int selrow = localpanel.localdisktable.getselectedrow(); if (selrow < 0) { // 创建当前文件夹对象 curfolder = new file(localpanel.localselfilepathlabel.gettext()); } else { // 获取表格选择行的第一个单元值 object value = localpanel.localdisktable.getvalueat(selrow, 0); if (value instanceof file) { // 如果单元值是文件,则获取文件的上级文件夹 curfolder = (file) value; if (curfolder.getparentfile() != null) curfolder = curfolder.getparentfile(); } else // 否则根据界面的路径标签创建当前文件夹对象 curfolder = new file(localpanel.localselfilepathlabel.gettext()); } // 创建当前文件夹下的新文件夹对象 file tempfile = new file(curfolder, foldername); if (tempfile.exists()) {// 如果存在相同文件或文件夹 joptionpane.showmessagedialog(localpanel, foldername + "创建失败,已经存在此名称的文件夹或文件。", "创建文件夹", joptionpane.error_message);// 提示用户名称已存在 return; // 结束本方法 } if (tempfile.mkdir()) // 创建文件夹 joptionpane.showmessagedialog(localpanel, foldername + "文件夹,创建成功。", "创建文件夹", joptionpane.information_message); else joptionpane.showmessagedialog(localpanel, foldername + "文件夹无法被创建。", "创建文件夹", joptionpane.error_message); this.localpanel.refreshfolder(curfolder);// 刷新文件夹 }
4、删除本地文件功能
选择好要删除的文件或文件夹,点击“删除”按钮,会触发com.oyp.ftp.panel.local.delfileaction类的actionperformed(actionevent e)方法,然后弹出一个对话框,选择“是”,“否”,“取消”按钮结束。其主要代码如下
/** * 删除本地文件的动作处理器的处理动作事件的方法 */ public void actionperformed(actionevent e) { // 获取表格选择的所有行 final int[] selrows = this.localpanel.localdisktable.getselectedrows(); if (selrows.length < 1) // 如果没有选择表格内容 return; // 结束该方法 int confirmdialog = joptionpane.showconfirmdialog(localpanel, "确定要执行删除吗?"); // 用户确认是否删除 if (confirmdialog == joptionpane.yes_option) { // 如果用于同意删除 runnable runnable = new runnable() { // 创建线程 /** * 删除文件的递归方法 * * @param file * 要删除的文件对象 */ private void delfile(file file) { try { if (file.isfile()) { // 如果删除的是文件 boolean delete = file.delete(); // 调用删该文件的方法 if (!delete) { joptionpane.showmessagedialog(localpanel, file .getabsolutefile() + "文件无法删除。", "删除文件", joptionpane.error_message); return; } } else if (file.isdirectory()) { // 如果删除的是文件夹 file[] listfiles = file.listfiles();// 获取该文件夹的文件列表 if (listfiles.length > 0) { for (file subfile : listfiles) { delfile(subfile); // 调用递归方法删除该列表的所有文件或文件夹 } } boolean delete = file.delete();// 最后删除该文件夹 if (!delete) { // 如果成功删除 joptionpane.showmessagedialog(localpanel, file .getabsolutefile() + "文件夹无法删除。", "删除文件", joptionpane.error_message); return; // 返回方法的调用处 } } } catch (exception ex) { logger.getlogger(localpanel.class.getname()).log( level.severe, null, ex); } } /** * 线程的主体方法 * * @see java.lang.runnable#run() */ public void run() { file parent = null; // 遍历表格的选择内容 for (int i = 0; i < selrows.length; i++) { // 获取每个选择行的第一列单元内容 object value = delfileaction.this.localpanel.localdisktable .getvalueat(selrows[i], 0); // 如果该内容不是diskfile类的实例对象 if (!(value instanceof diskfile)) continue; // 结束本次循环 diskfile file = (diskfile) value; if (parent == null) parent = file.getparentfile(); // 获取选择文件的上级文件夹 if (file != null) { delfile(file); // 调用递归方法删除选择内容 } } // 调用refreshfolder方法刷新当前文件夹 delfileaction.this.localpanel.refreshfolder(parent); joptionpane.showmessagedialog(localpanel, "删除成功。"); } }; new thread(runnable).start(); // 创建并启动这个线程 } }
5、重命名本地文件功能
选择好要重命名的文件或文件夹,点击“重命名”按钮,会触发com.oyp.ftp.panel.local.rennameaction类的actionperformed(actionevent e)方法,其主要代码如下
/** * 重命名动作的事件处理方法 */ @override public void actionperformed(actionevent e) { // 获取本地资源表格的选择行号 int selrow = this.localpanel.localdisktable.getselectedrow(); if (selrow < 0) return; // 获取选择行的第一个单元值 object value = this.localpanel.localdisktable.getvalueat(selrow, 0); if (!(value instanceof file)) return; // 将该单元值转换为file类的对象 file file = (file) value; // 使用对话框接收用户如入的新文件名 string filename = joptionpane .showinputdialog("请输入新文件名", file.getname()); if (filename == null) return; // 创建新名称的文件 file renfile = new file(file.getparentfile(), filename); boolean isrename = file.renameto(renfile); // 将原文件重命名 // 刷新文件夹 this.localpanel.refreshfolder(file.getparentfile()); if (isrename) { joptionpane.showmessagedialog(this.localpanel, "重命名为" + filename + "成功。"); } else { joptionpane.showmessagedialog(this.localpanel, "无法重命名为" + filename + "。", "文件重命名", joptionpane.error_message); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)
-
Java语言实现简单FTP软件 辅助功能模块FTP站点管理实现(12)
-
Java语言实现简单FTP软件 FTP远程文件管理模块实现(10)
-
Java语言实现简单FTP软件 FTP上传下载管理模块实现(11)
-
用java实现简单FTP远程文件管理的功能(ftp软件开发四)
-
用java实现FTP本地文件管理模块功能实例(ftp软件开发三)
-
Java语言实现简单FTP软件-FTP软件效果图预览之上传功能图解(三)
-
Java语言实现简单FTP软件-FTP软件效果图预览之下载功能图文介绍(二)
-
Java语言实现简单FTP软件-FTP软件远程窗口实现(六)
-
Java语言实现简单FTP软件-FTP软件主界面的代码详解(四)