ITPub博客

首页 > 应用开发 > Java > java 使用 common-net.jar来操作ftp服务器上传下载,删除,移动,重命名等操作

java 使用 common-net.jar来操作ftp服务器上传下载,删除,移动,重命名等操作

Java 作者:hgs19921112 时间:2018-09-11 15:44:15 0 删除 编辑
package hgs.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class FTPTest {
	static String hostname="192.168.249.134";
	static int port = 21;
	static String username = "hgs";
	static String password = "hgs";
	public static void main(String[] args) {
		
		FTPClient client = getFTPClient();
		if(client==null)
			return;
		//mkFTPServerCompleteDir(client,"/home/hgs");
		//downloadFiles(client, "/home/hgs", "c:/download");
		//uploadFile(client, "c:/download/ipconf.cfg", "/home/hgs");
		rmrFile( client , "/home/hgs/upload", "STOU.1");
		closeFTPClient(client);
	}
	//得到ftp客户端
	public static  FTPClient getFTPClient() {
		FTPClient ftpClient = new FTPClient();
		ftpClient.setControlEncoding("utf-8");
		boolean flg = false;
		try {
			ftpClient.connect(hostname, port);
			flg = ftpClient.login(username, password);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if(flg) {
			return ftpClient;
		}else {
			return null;
		}
		
	}
	//关闭链接
	public static void closeFTPClient(FTPClient client) {
		try {
			client.disconnect();
		} catch (IOException e) {
			e.printStackTrace();
		}		
	}
	//遍历文件
	public static FTPFile[]  getFileList(FTPClient client,String dir) {
		FTPFile[] files=null;
		try {
			files = client.listFiles(dir);
		} catch (IOException e) {
			e.printStackTrace();
		}
/*		for(FTPFile file : files) {
			System.out.println(file.getName());
		}*/
		return files;
	}
	//下载文件
	public static void downloadFiles(FTPClient client,String sourcedir,String destdir) {
		boolean flg = false;
		try {
			flg = client.changeWorkingDirectory(sourcedir);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if(flg) {
			try {
				//得到所有文件遍历
				FTPFile[] files = client.listFiles();
				for(FTPFile file: files) {
					String filename = file.getName();
					if(!downloadExists(destdir,filename)&&!"done".equals(filename)) {
						FileOutputStream fos = new FileOutputStream(destdir+"/"+filename);
						client.retrieveFile(filename, fos);					
						fos.close();
						//下载完成后移动文件到完成目录,这里可以当做重命名或者移动文件
						client.rename(sourcedir+"/"+filename, sourcedir+"/done/"+filename);
					}
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
			
	}
	//判断本地文件名是否与要下载的文件名重复
	public static boolean downloadExists(String destdir,String filename) {
		File file = new File(destdir+"/"+filename);
		return file.exists();
	}
	//创建下载完成目录,下载完成后的文件都移动到该目录下
	public static void mkFTPServerCompleteDir(FTPClient client,String sourcedir) {
		String doneDir = sourcedir+"/"+"done";
		boolean flg = false;
		try {
			FTPFile[] files = client.listDirectories(sourcedir);
			for(FTPFile f :files) {
				if(f.getName().equals("done"))
					flg=true;
			}
			if(!flg)
				client.makeDirectory(doneDir);
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	
	
	public static void uploadFile(FTPClient client ,String sourcefile ,String destdir) {
		String destination = destdir+"/upload";
		mkFTPServerUploadCompleteDir(client,destdir);
		try {
			FileInputStream fis = new FileInputStream(sourcefile);
			boolean flog = client.changeWorkingDirectory(destination);	
			if(flog) {
				client.setFileType(FTPClient.BINARY_FILE_TYPE);
				client.storeUniqueFile(fis);
				fis.close();
			}
		} catch (Exception e  ) {
			e.printStackTrace();
		}
	}
	//创建下载完成目录,下载完成后的文件都移动到该目录下
public static void mkFTPServerUploadCompleteDir(FTPClient client,String uploaddir) {
		String doneDir = uploaddir+"/"+"upload";
		boolean flg = false;
		try {
			FTPFile[] files = client.listDirectories(uploaddir);
			for(FTPFile f :files) {
				if(f.getName().equals("upload"))
					flg=true;
			}
			if(!flg)
				client.makeDirectory(doneDir);
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
//删除文件
public static void rmrFile(FTPClient client ,String path,String filename) {
		
		try {
			client.changeWorkingDirectory(path);
			client.dele(path+"/"+filename);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

转自:https://www.cnblogs.com/weihbs/p/7760552.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31506529/viewspace-2213965/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-11-22

  • 博文量
    106
  • 访问量
    186401