rhino.loadDex(project.getResourcesPath() + "ftp.dex");
importClass(org.apache.commons.net.ftp.FTP);
importClass(org.apache.commons.net.ftp.FTPClient);
importPackage(java.io);
var ftpHost = "154.201.80.249";
var ftpPort = 21;
var username = "rtyerye";
var password = "8A66543yy";
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));
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();
ftpClient.logout();
ftpClient.disconnect();
var outputStream = new FileOutputStream(new File(localDownloadPath));
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();
ftpClient.logout();
ftpClient.disconnect();
代码通过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上传和下载的操作流程。 |