0

0

用java实现简单FTP远程文件管理的功能(ftp软件开发四)

Y2J

Y2J

发布时间:2017-04-21 17:06:37

|

3782人浏览过

|

来源于php中文网

原创

本文为大家分享了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服务器端的文件列表

立即学习Java免费学习笔记(深入)”;

点击“刷新”按钮,会触发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()方法,其主要代码如下

多奥淘宝客程序API免费版 F8.0
多奥淘宝客程序API免费版 F8.0

多奥淘宝客程序免费版拥有淘宝客站点的基本功能,手动更新少,管理简单等优点,适合刚接触网站的淘客们,或者是兼职做淘客们。同样拥有VIP版的模板引擎技 术、强大的文件缓存机制,但没有VIP版的伪原创跟自定义URL等多项创新的搜索引擎优化技术,除此之外也是一款高效的API数据系统实现无人值守全自动 化运行的淘宝客网站程序。4月3日淘宝联盟重新开放淘宝API申请,新用户也可使用了

下载
/** 刷新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(); 
 } 
}

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3万人学习

C# 教程
C# 教程

共94课时 | 7.9万人学习

Java 教程
Java 教程

共578课时 | 53.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号