代码通过rhino.loadDex
函数加载了一个名为ftp.dex
的库文件。这个文件包含了Apache Commons Net库中用于FTP操作的相关类。Apache Commons Net是一个开源的Java库,提供了与各种网络协议进行交互的类,其中就包括FTP协议。
接着,代码通过importClass
和importPackage
语句导入了FTP操作所需的一些Java类和包,比如FTP
、FTPClient
、FileInputStream
、File
、FileOutputStream
等。这些类和包分别用于创建FTP客户端、处理文件流、以及进行文件的读写操作。
然后,定义了一些FTP服务器的配置参数,包括FTP服务器的地址、端口号、登录用户名和密码,以及本地文件路径和远程文件路径。这些参数是进行FTP操作的基础信息。
代码创建了一个FTPClient
对象,并通过connect
方法连接到FTP服务器。设置了数据传输超时时间和连接超时时间,以确保在网络状况不佳的情况下,脚本不会无限期地等待。接着通过login
方法登录到FTP服务器,并设置了文件类型为二进制文件类型,这对于上传和下载二进制文件(如图片、压缩文件等)是非常必要的。enterLocalPassiveMode
方法用于设置FTP客户端的工作模式为被动模式,这对于通过防火墙进行FTP操作通常是必需的。
完成连接和登录后,代码通过storeFile
方法将本地文件上传到FTP服务器。这里,FileInputStream
被用来读取本地文件,然后通过storeFile
方法将文件内容上传到指定的远程目录。上传完成后,使用printl
函数输出一条成功信息。
上传完成后,关闭了FileInputStream
,并登出FTP服务器,断开连接。接着,为了下载文件,再次创建了一个FileOutputStream
对象用于写入本地文件,然后重新连接并登录到FTP服务器。
为了防止中文乱码,设置了FTP控制编码为GB2312
,并再次设置了文件类型为二进制文件类型以及被动工作模式。然后通过changeWorkingDirectory
方法切换到远程文件所在目录,使用retrieveFile
方法下载文件到本地指定路径。下载完成后,同样使用printl
输出成功信息,并关闭了FileOutputStream
。
最后,再次登出FTP服务器,并断开连接,完成了整个FTP上传和下载的操作流程。
/*
欢迎使用AiWork安卓自动化IDE
qq群: 711841924
*/
// 加载FTP库
rhino.loadDex(project.getResourcesPath() + "ftp.dex");
importClass(org.apache.commons.net.ftp.FTP);
importClass(org.apache.commons.net.ftp.FTPClient);
importPackage(java.io);
// FTP配置参数
var ftpHost = "154.201.80.249";
var ftpPort = 21;
var username = "rtyerye";
var password = "8AafKDs4KhMDR3yy";
var remoteUploadDir = "/"; // 远程上传目录
var localUploadFilePath = "/storage/emulated/0/auto/A游戏试玩/logo.png"; // 本地上传文件路径
var remoteDownloadFile = "/FTP.rar"; // 远程下载文件
var localDownloadPath = "/storage/emulated/0/auto/A游戏试玩/FTP下载测试.rar"; // 本地下载路径
var ftpClient = new FTPClient();
// 上传文件
var fis = new FileInputStream(new File(localUploadFilePath));
// 连接FTP服务器
ftpClient.connect(ftpHost, ftpPort);
ftpClient.setDataTimeout(10000); // 设置超时时间
ftpClient.setConnectTimeout(10000);
ftpClient.login(username, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
// 上传文件
ftpClient.storeFile(remoteUploadDir + new File(localUploadFilePath).getName(), fis);
printl("文件上传成功:" + remoteUploadDir + new File(localUploadFilePath).getName());
// 关闭上传文件流
fis.close();
// 登出并断开FTP连接
ftpClient.logout();
ftpClient.disconnect();
// 下载文件
var outputStream = new FileOutputStream(new File(localDownloadPath));
// 重新连接FTP服务器
ftpClient.connect(ftpHost, ftpPort);
ftpClient.login(username, password);
// 编码设置(解决中文乱码)
ftpClient.setControlEncoding("GB2312");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
// 切换到根目录
ftpClient.changeWorkingDirectory("/");
// 执行下载
ftpClient.retrieveFile(remoteDownloadFile, outputStream);
printl("下载成功!保存到:" + localDownloadPath);
// 关闭下载文件流
outputStream.close();
// 登出并断开FTP连接
ftpClient.logout();
ftpClient.disconnect();
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) | Powered by Discuz! X3.2 |