java删除ftp文件夹内容_java ftp文件上传下载删除

packageftp;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.MalformedURLException;importorg.apache.commons.net.ftp.FTP;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;public classFtpUtils {//ftp服务器地址

public String hostname = "10.0.46.138";//ftp服务器端口号默认为21

public Integer port = 21;//ftp登录账号

public String username = "ftptest";//ftp登录密码

public String password = "ftptest";public FTPClient ftpClient = null;/*** 初始化ftp服务器*/

public voidinitFtpClient() {

ftpClient= newFTPClient();

ftpClient.setControlEncoding("utf-8");try{

System.out.println("connecting...ftp服务器:" + this.hostname + ":" + this.port);

ftpClient.connect(hostname, port);//连接ftp服务器

ftpClient.login(username, password); //登录ftp服务器

int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器

if (!FTPReply.isPositiveCompletion(replyCode)) {

System.out.println("connect failed...ftp服务器:" + this.hostname + ":" + this.port);

}else{

System.out.println("connect successfu...ftp服务器:" + this.hostname + ":" + this.port);

}

}catch(MalformedURLException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}/*** 上传文件

*

*@parampathname

* ftp服务保存地址

*@paramfileName

* 上传到ftp的文件名

*@paramoriginfilename

* 待上传文件的名称(绝对地址) *

*@return

*/

public booleanuploadFile(String pathname, String fileName, String originfilename) {

InputStream inputStream= null;try{

System.out.println("开始上传文件");

inputStream= new FileInputStream(newFile(originfilename));

initFtpClient();

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

CreateDirecroty(pathname);

ftpClient.makeDirectory(pathname);

ftpClient.changeWorkingDirectory(pathname);

ftpClient.setControlEncoding("UTF-8");//每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据

ftpClient.enterLocalPassiveMode();//观察是否真的上传成功

boolean storeFlag =ftpClient.storeFile(fileName, inputStream);

System.err.println("storeFlag==" +storeFlag);

inputStream.close();

ftpClient.logout();

System.out.println("上传文件成功");

}catch(Exception e) {

System.out.println("上传文件失败");

e.printStackTrace();

}finally{if(ftpClient.isConnected()) {try{

ftpClient.disconnect();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=inputStream) {try{

inputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}return true;

}/*** 上传文件

*

*@parampathname

* ftp服务保存地址

*@paramfileName

* 上传到ftp的文件名

*@paraminputStream

* 输入文件流

*@return

*/

public booleanuploadFile(String pathname, String fileName, InputStream inputStream) {try{

System.out.println("开始上传文件");

initFtpClient();

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

CreateDirecroty(pathname);

ftpClient.makeDirectory(pathname);

ftpClient.changeWorkingDirectory(pathname);

ftpClient.storeFile(fileName, inputStream);

inputStream.close();

ftpClient.logout();

System.out.println("上传文件成功");

}catch(Exception e) {

System.out.println("上传文件失败");

e.printStackTrace();

}finally{if(ftpClient.isConnected()) {try{

ftpClient.disconnect();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=inputStream) {try{

inputStream.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}return true;

}//改变目录路径

public booleanchangeWorkingDirectory(String directory) {boolean flag = true;try{

flag=ftpClient.changeWorkingDirectory(directory);if(flag) {

System.out.println("进入文件夹" + directory + " 成功!");

}else{

System.out.println("进入文件夹" + directory + " 失败!开始创建文件夹");

}

}catch(IOException ioe) {

ioe.printStackTrace();

}returnflag;

}//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建

public boolean CreateDirecroty(String remote) throwsIOException {boolean success = true;

String directory= remote + "/";//如果远程目录不存在,则递归创建远程服务器目录

if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(newString(directory))) {int start = 0;int end = 0;if (directory.startsWith("/")) {

start= 1;

}else{

start= 0;

}

end= directory.indexOf("/", start);

String path= "";

String paths= "";while (true) {

String subDirectory= new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");

path= path + "/" +subDirectory;if (!existFile(path)) {if(makeDirectory(subDirectory)) {

changeWorkingDirectory(subDirectory);

}else{

System.out.println("创建目录[" + subDirectory + "]失败");

changeWorkingDirectory(subDirectory);

}

}else{

changeWorkingDirectory(subDirectory);

}

paths= paths + "/" +subDirectory;

start= end + 1;

end= directory.indexOf("/", start);//检查所有目录是否创建完毕

if (end <=start) {break;

}

}

}returnsuccess;

}//判断ftp服务器文件是否存在

public boolean existFile(String path) throwsIOException {boolean flag = false;

FTPFile[] ftpFileArr=ftpClient.listFiles(path);if (ftpFileArr.length > 0) {

flag= true;

}returnflag;

}//创建目录

public booleanmakeDirectory(String dir) {boolean flag = true;try{

flag=ftpClient.makeDirectory(dir);if(flag) {

System.out.println("创建文件夹" + dir + " 成功!");

}else{

System.out.println("创建文件夹" + dir + " 失败!");

}

}catch(Exception e) {

e.printStackTrace();

}returnflag;

}/*** * 下载文件 *

*

*@parampathname

* FTP服务器文件目录 *

*@paramfilename

* 文件名称 *

*@paramlocalpath

* 下载后的文件路径 *

*@return

*/

public booleandownloadFile(String pathname, String filename, String localpath) {boolean flag = false;

OutputStream os= null;try{

System.out.println("开始下载文件");

initFtpClient();//切换FTP目录

boolean changeFlag =ftpClient.changeWorkingDirectory(pathname);

System.err.println("changeFlag==" +changeFlag);

ftpClient.enterLocalPassiveMode();

ftpClient.setRemoteVerificationEnabled(false);//查看有哪些文件夹 以确定切换的ftp路径正确

String[] a =ftpClient.listNames();

System.err.println(a[0]);

FTPFile[] ftpFiles=ftpClient.listFiles();for(FTPFile file : ftpFiles) {if(filename.equalsIgnoreCase(file.getName())) {

File localFile= new File(localpath + "/" +file.getName());

os= newFileOutputStream(localFile);

ftpClient.retrieveFile(file.getName(), os);

os.close();

}

}

ftpClient.logout();

flag= true;

System.out.println("下载文件成功");

}catch(Exception e) {

System.out.println("下载文件失败");

e.printStackTrace();

}finally{if(ftpClient.isConnected()) {try{

ftpClient.disconnect();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=os) {try{

os.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}returnflag;

}/*** * 删除文件 *

*

*@parampathname

* FTP服务器保存目录 *

*@paramfilename

* 要删除的文件名称 *

*@return

*/

public booleandeleteFile(String pathname, String filename) {boolean flag = false;try{

System.out.println("开始删除文件");

initFtpClient();//切换FTP目录

ftpClient.changeWorkingDirectory(pathname);

ftpClient.dele(filename);

ftpClient.logout();

flag= true;

System.out.println("删除文件成功");

}catch(Exception e) {

System.out.println("删除文件失败");

e.printStackTrace();

}finally{if(ftpClient.isConnected()) {try{

ftpClient.disconnect();

}catch(IOException e) {

e.printStackTrace();

}

}

}returnflag;

}public static voidmain(String[] args) {

FtpUtils ftp= newFtpUtils();//文件路径写为用户建立时 指定的目录//ftp.uploadFile("/home/ftptest/var/ftp/pub/test", "adt-bundle-windows-x86_64-20140702.rar", "E://chart/adt-bundle-windows-x86_64-20140702.rar");//ftp.downloadFile("/home/ftptest/var/ftp/pub/test", "hongmenci.png", "E://");

ftp.deleteFile("/home/ftptest/var/ftp/pub/test", "adt-bundle-windows-x86_64-20140702.rar");//System.out.println("ok");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值