计算FTP所有目录文件大小
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import java.io.IOException;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
public class FtpService {
public FTPClient login() throws IOException{
FTPClient ftpClient=null;
try {
ftpClient=new FTPClient();
ftpClient.setControlEncoding("UTF-8");
ftpClient.connect("192.168.59.100");
ftpClient.login("test","123456");
if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
System.out.println("登陆失败");
ftpClient.disconnect();
}else {
System.out.println("FTP链接成功");
return ftpClient;
}
}catch (SocketException e){
System.out.println("连接失败");
throw new IOException(e.getMessage());
}
return ftpClient;
}
public List<String> ls(FTPClient ftpClient) throws IOException{
List<String> filelist=new ArrayList<String>();
FTPFile[] listDirectories=ftpClient.listFiles();
for(FTPFile ftpFile:listDirectories){
String name=ftpFile.getName();
long initsize=0;
initsize=ftpFile.getSize()+initsize;
filelist.add(name);
System.out.println(name+"大小为"+initsize);
}
return filelist;
}
public long getFileSizes(FTPClient ftpClient,long initSize,String path) throws IOException{
List<String> filelist=new ArrayList<String>();
FTPFile[] listDirectories=ftpClient.listFiles(path);
for(FTPFile ftpFile:listDirectories){
if(ftpFile.isDirectory()){
initSize= getFileSizes(ftpClient,initSize,path+"/"+ftpFile.getName());
}else {
String name = ftpFile.getName();
initSize = ftpFile.getSize() + initSize;
filelist.add(name);
System.out.println(name + "大小为" + ftpFile.getSize());
}
}
return initSize;
}
public void dc(FTPClient ftpClient){
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getstat(FTPClient ftpClient){
String status = null;
try {
status = ftpClient.getStatus();
} catch (IOException e) {
e.printStackTrace();
}
return status;
}
public static void main(String[] args) {
FtpService f=new FtpService();
FTPClient ftpClient = null;
try {
ftpClient = f.login();
String path=".";
long initSize=0;
long fileSize=f.getFileSizes(ftpClient,initSize,path);
System.out.println(fileSize/1048576);
f.dc(ftpClient);
} catch (IOException e) {
e.printStackTrace();
}finally {
f.dc(ftpClient);
}
}
}
代码很简单,随手一记