热门标签 | 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(); 
 } 
} 

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


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
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社区 版权所有