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/ ,如需转载,请注明出处,否则将追究法律责任。