热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Java语言实现简单FTP软件FTP远程文件管理模块实现(10)

这篇文章主要为大家详细介绍了Java语言实现简单FTP软件,FTP远程文件管理模块的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了FTP远程文件管理模块的实现方法,供大家参考,具体内容如下

首先看一下界面:

1、远程FTP服务器端的文件列表的显示

将远程的当前目录下所有文件显示出来,并显示文件的属性包括文件名、大小、日期、通过javax.swing.JTable()来显示具体的数据。更改当前文件目录会调用com.oyp.ftp.panel.ftp.FtpPanel类的listFtpFiles(final TelnetInputStream list)方法,其主要代码如下

 /** 
 * 读取FTP文件到表格的方法 
 * @param list 
 *  读取FTP服务器资源列表的输入流 
 */ 
 public synchronized void listFtpFiles(final TelnetInputStream list) { 
 // 获取表格的数据模型 
 final DefaultTableModel model = (DefaultTableModel) ftpDiskTable 
  .getModel(); 
 model.setRowCount(0); 
 // 创建一个线程类 
 Runnable runnable = new Runnable() { 
  public synchronized void run() { 
  ftpDiskTable.clearSelection(); 
  try { 
   String pwd = getPwd(); // 获取FTP服务器的当前文件夹 
   model.addRow(new Object[] { new FtpFile(".", pwd, true), 
    "", "" }); // 添加“.”符号 
   model.addRow(new Object[] { new FtpFile("..", pwd, true), 
    "", "" }); // 添加“..”符号  
   byte[]names=new byte[2048]; 
   int bufsize=0; 
   bufsize=list.read(names, 0, names.length); 
   int i=0,j=0; 
   while(i

2、刷新远程FTP服务器端的文件列表

点击“刷新”按钮,会触发com.oyp.ftp.panel.ftp.RefreshAction类的actionPerformed(ActionEvent e)方法,其主要代码如下

/** 刷新按钮的动作处理器动作的事件处理方法 **/ 
 @Override 
 public void actionPerformed(ActionEvent e) { 
 ftpPanel.refreshCurrentFolder(); // 调用刷新FTP资源列表的方法 
 } 

上面的响应事件会调用com.oyp.ftp.panel.ftp.FtpPanel类的refreshCurrentFolder()方法,其主要代码如下

/** 刷新FTP资源管理面板的当前文件夹**/ 
 public void refreshCurrentFolder() { 
 try { 
  // 获取服务器文件列表 
  TelnetInputStream list = ftpClient.list(); 
  listFtpFiles(list); // 调用解析方法 
 } catch (IOException e) { 
  e.printStackTrace(); 
 } 
 } 

3、新建远程FTP服务器端的文件夹

点击“新建文件夹”按钮,会触发com.oyp.ftp.panel.ftp.CreateFolderAction类的actionPerformed(ActionEvent e)方法,然后弹出一个对话框,填写要新建的文件夹名称,选择“确定”,“取消”按钮结束。其主要代码如下

/** 
 * 创建文件夹的事件处理方法 
 */ 
@Override 
public void actionPerformed(ActionEvent e) { 
 // 接收用户输入的新建文件夹的名称 
 String folderName = JOptionPane.showInputDialog("请输入文件夹名称:"); 
 if (folderName == null) 
 return; 
 int read = -1; 
 try { 
 // 发送创建文件夹的命令 
 ftpPanel.ftpClient.sendServer("MKD " + folderName + "\r\n"); 
 // 读取FTP服务器的命令返回码 
 read = ftpPanel.ftpClient.readServerResponse(); 
 } catch (IOException e1) { 
 e1.printStackTrace(); 
 } 
 if (read == 257) {// 如果返回码等于257(路径名建立完成) 
 // 提示文件夹创建成功 
 JOptionPane.showMessageDialog(ftpPanel, folderName + "文件夹,创建成功。", 
  "创建文件夹", JOptionPane.INFORMATION_MESSAGE); 
 }else{ 
 // 否则 提示用户该文件夹无法创建 
 JOptionPane.showMessageDialog(ftpPanel, folderName + "文件夹无法被创建。", 
  "创建文件夹", JOptionPane.ERROR_MESSAGE); 
 } 
 this.ftpPanel.refreshCurrentFolder(); 
} 

4、 删除远程FTP服务器端的文件

选择好要删除的文件或文件夹,点击“删除”按钮,会触发com.oyp.ftp.panel.ftp.DelFileAction类的actionPerformed(ActionEvent e)方法,然后弹出一个对话框,选择“是”,“否”,“取消”按钮结束。其主要代码如下

public void actionPerformed(ActionEvent e) { 
 // 获取显示FTP资源列表的表格组件当前选择的所有行 
 final int[] selRows = ftpPanel.ftpDiskTable.getSelectedRows(); 
 if (selRows.length <1) 
  return; 
 int cOnfirmDialog= JOptionPane.showConfirmDialog(ftpPanel, "确定要删除吗?"); 
 if (cOnfirmDialog== JOptionPane.YES_OPTION) { 
  Runnable runnable = new Runnable() { 
   
  /** 
   * 删除服务器文件的方法 
   * @param file - 文件名称 
   */ 
  private void delFile(FtpFile file) { 
   FtpClient ftpClient = ftpPanel.ftpClient; // 获取ftpClient实例 
   try { 
   if (file.isFile()) { // 如果删除的是文件 
    ftpClient.sendServer("DELE " + file.getName() 
     + "\r\n"); // 发送删除文件的命令 
    ftpClient.readServerResponse(); // 接收返回编码 
   } else if (file.isDirectory()) { // 如果删除的是文件夹 
    ftpClient.cd(file.getName()); // 进入到该文件夹 
    
    TelnetInputStream telnetInputStream=ftpClient.list(); 
    byte[]names=new byte[2048]; 
    int bufsize=0; 
    bufsize=telnetInputStream.read(names, 0, names.length); 
    int i=0,j=0; 
    while(i

5、重命名远程FTP服务器端的文件

选择好要重命名的文件或文件夹,点击“重命名”按钮,会触发com.oyp.ftp.panel.ftp.RenameAction类的actionPerformed(ActionEvent e)方法,其主要代码如下

/** 
 * 重命名FTP文件的事件处理方法 
 */ 
@Override 
public void actionPerformed(ActionEvent e) { 
 // 获取显示FTP资源的表格当前选择行号 
 int selRow = ftpPanel.ftpDiskTable.getSelectedRow(); 
 if (selRow <0) 
 return; 
 // 获取当前行的第一个表格单元值,并转换成FtpFile类型的对象 
 FtpFile file = (FtpFile) ftpPanel.ftpDiskTable.getValueAt(selRow, 0); 
 // 使用对话框接收用户输入的新文件或文件夹名称 
 String newName = JOptionPane.showInputDialog(ftpPanel, "请输入新名称。"); 
 if (file.getName().equals(".") || file.getName().equals("..") 
  || newName == null) 
 return; 
 try { 
 // 向服务器发送重命名的指令 
 ftpPanel.ftpClient.sendServer("RNFR " + file.getName() + "\r\n"); //对旧路径重命名 
 ftpPanel.ftpClient.readServerResponse(); 
 ftpPanel.ftpClient.sendServer("RNTO " + newName + "\r\n");  //对新路径重命名 
 ftpPanel.ftpClient.readServerResponse(); 
 ftpPanel.refreshCurrentFolder(); // 刷新当前文件夹 
 } catch (IOException e1) { 
 e1.printStackTrace(); 
 } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 最新进展:作为最接近官方声明的信息源,本文吸引了大量关注。若需获取最新动态,请访问:lkhill.com/ccie-version-5-update ... [详细]
  • System Center Operations Manager 2007(简称SCOM 2007)作为MOM 2005的升级版,不仅整合了监控与管理功能,还显著简化了操作流程,提供了更加全面和精准的服务管理。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统上安装中文宋体字体的方法,包括操作系统的环境配置、字体管理工具的安装、字体文件的传输与缓存重建等步骤。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 利用Docker部署JupyterHub以支持Python协同开发
    本文介绍了如何通过Docker容器化技术安装和配置JupyterHub,以实现多用户的Python开发环境,特别适合团队协作场景。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
author-avatar
半宅半学
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有