计算FTP所有目录文件大小

                                计算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);

        }

    }

}
代码很简单,随手一记
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值