全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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  # 本地文件  # Java中文件管理系统FastDFS详解  # java property配置文件管理工具框架过程详解  # java使用JSCH实现SFTP文件管理  # Java语言实现简单FTP软件 FTP远程文件管理模块实现(10)  # 详解Java的文件与目录管理以及输入输出相关操作  # java编写的文件管理器代码分享  # Java实战之简单的文件管理器  # 递归  # 重命名  # 其主要  # 行号  # 文件列表  # 对话框  # 的是  # 第一个  # 遍历  # 请输入  # 弹出  # 命名为  # 在此  # 如果没有  # 看一下  # 大家分享  # 转换为  # 将该  # 该文件  # 具体内容 


相关文章: 建站之星如何实现网站加密操作?  油猴 教程,油猴搜脚本为什么会网页无法显示?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  存储型VPS适合搭建中小型网站吗?  制作企业网站建设方案,怎样建设一个公司网站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  阿里云网站制作公司,阿里云快速搭建网站好用吗?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站之星logo尺寸如何设置最合适?  常州自助建站费用包含哪些项目?  建站主机选购指南:核心配置优化与品牌推荐方案  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  h5在线制作网站电脑版下载,h5网页制作软件?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  完全自定义免费建站平台:主题模板在线生成一站式服务  贸易公司网站制作流程,出口贸易网站设计怎么做?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何用IIS7快速搭建并优化网站站点?  ,怎么用自己头像做动态表情包?  如何正确选择百度移动适配建站域名?  如何快速选择适合个人网站的云服务器配置?  如何通过二级域名建站提升品牌影响力?  如何在服务器上三步完成建站并提升流量?  如何用wdcp快速搭建高效网站?  ,想在网上投简历,哪几个网站比较好?  如何撰写建站申请书?关键要点有哪些?  如何在企业微信快速生成手机电脑官网?  如何选择适合PHP云建站的开源框架?  北京企业网站设计制作公司,北京铁路集团官方网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  宝塔Windows建站如何避免显示默认IIS页面?  建站之星如何开启自定义404页面避免用户流失?  建站主机空间推荐 高性价比配置与快速部署方案解析  建站之星2.7模板:企业网站建设与h5定制设计专题  建站为何优先选择香港服务器?  如何快速搭建高效可靠的建站解决方案?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  制作网站的基本流程,设计网站的软件是什么?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  网站制作企业,网站的banner和导航栏是指什么?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星官网登录失败?如何快速解决?  早安海报制作网站推荐大全,企业早安海报怎么每天更换? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。