公司开发完一套软件后,可能需要在手机上进行测试,几百上千台手机都要手动进行推送安装的话效率极低,此时写一套java程序把文件自动推送到设备上将大大降低人力物力的投入。本篇基于上篇的铺垫,使用FTP工具实现PC端 向多台手机推送文件,编写的java文件需要用到依赖包运行,本篇将结合应用场景,再次学习“依赖运行”。
需要准备:
Linux操作环境、
FTP依赖包:【http://download.csdn.net/download/u012134786/9650966】、
Android手机两台,下载ES文件浏览器--->远程管理--->打开:分别记下【ip地址 :192.168.20.199 端口号:3721】【ip地址:xxxxxxxx 端口号:xxxxxxx】、
①编写推送文件的FtpDemo类,
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.nio.charset.Charset;
import java.io.FileInputStream;
public class FtpDemo {
public static void conn(){
FTPClient ftp = new FTPClient();
//二维数组依次表示:手机ip地址、手机端口、FTP用户名、FTP密码。若要向更多手机逐一推送文件,可以在array中添加更多的数组。
String[][] array = {
{"192.168.20.199", "3721","root","root"},
{"192.168.20.53", "2121","root","123456"}
};
for(int i = 0; i < array.length; i++){
try{
/*
*循环获取二维数组的数据
*ftp.connect(ip地址,端口号);
*ftp.login(用户名,密码);
*/
ftp.connect(array[i][0],Integer.parseInt(array[i][1]));
ftp.login(array[i][2],array[i][3]);
ftp.setCharset(Charset.forName("UTF-8"));
ftp.setControlEncoding("UTF-8");
//向手机推送一个jar包,ftp.sotreFile(文件名,文件所在路径);
ftp.storeFile("/commons-net-3.5.jar", new FileInputStream("/home/test/commons-net-3.5.jar"));
//推送成功则输出success!
System.out.println("success");
}catch(SocketException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
Thread.sleep(500);
}catch(InterruptedException e1){
e1.printStackTrace();
}
try{
ftp.abor();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
public static void main(String args[]){
conn();
}
}
②将依赖jar包与FtpDemo.java文件放在同一目录下
编译【javac -cp .:commons-net-3.5.jar FtpDemo.java】
运行【java -cp .:commons-net-3.5.jar FtpDemo】
编译运行FtpDemo.java,看到输出了success代表文件已经推送到手机上叻
默认是推送到存储空间的根目录
注意:两台手机和Linux操作系统都要处于同一网段内才能进行文件推送,即局域网、或者说同一个wifi中;
手机也要时刻检查是否已经开启FTP,否则执行java程序的时候会报错连接失败。