今天复习了下Ftp文件上传、下载的代码,很简单。分享给大家,用到的jar包是commons-net-2.2.jar
代码很详细自己看吧,可以直接运行的。希望大家关注,互相交流
文件上传:
FTPClient ftp = new FTPClient();
ftp.connect("10.0.2.218", 21);
ftp.login("ftp", "812812");
// 获取ftp登录应答码
int reply = ftp.getReplyCode();
// 验证是否登陆成功
if (!FTPReply.isPositiveCompletion(reply)) {
System.out.println("未连接到FTP,用户名或密码错误。");
//断开
ftp.disconnect();
throw new RuntimeException("未连接到FTP,用户名或密码错误。");
} else {
System.out.println("FTP连接成功");
//ftp client告诉ftp server开通一个端口来传输数据,
//因为ftp server可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞
ftp.enterLocalPassiveMode();
//设置传输协议
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
//设置上传文件路径
File file = new File("C:\\Users\\Administrator\\Desktop\\project\\women.png");
//将文件存入字节输入流
InputStream input = new FileInputStream(file);
//设置目录
ftp.changeWorkingDirectory("ftp://10.0.2.218/");
//开始上传,并且得到上传返回值
boolean flag = ftp.storeFile(file.getName(), input);
if (flag) {
System.out.println("上传文件成功!");
//注销
ftp.logout();
//断开
ftp.disconnect();
} else {
System.out.println("上传文件失败!");
//注销
ftp.logout();
//断开
ftp.disconnect();
}
}
}
文件下载:
FTPClient ftp=new FTPClient();
ftp.connect("10.0.2.218", 21);
ftp.login("ftp", "812812");
int returnCode=ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(returnCode)){
throw new RuntimeException("登录失败");
}else{
ftp.changeWorkingDirectory("ftp://10.0.2.32/");
ftp.setControlEncoding("GBK");
String fileName="women.png";
FTPFile[] ftpData=ftp.listFiles();
if(ftpData.length>0){
for (int i = 0; i < ftpData.length; i++) {
String name=ftpData[i].getName();
System.out.println(name);
if(name.equals(fileName)){
File file=new File("D:/void/"+name);
FileOutputStream out=new FileOutputStream(file);
ftp.retrieveFile(ftpData[i].getName(), out);
out.close();
}
}
}
}
创建文件夹
boolean result=ftp.makeDirectory("/Test"); //创建目录地址