• Java commons-net FTP服务器文件操作


    Java commons-net FTP服务器文件操作

    连接FTP服务器

    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    
    public class ftpConnect {
        private static final String ftp_server="XXX:XXX:XXX:XXX";  //FTP服务器地址
        
        private static final int ftp_port=21;  //FTP服务器端口号
        
        private static final String ftp_user="sc";  //用户
    
        private static final String ftp_passwd="123";  //密码
        
        private static final int timeout=5000;  //超时时间
        
        private static final String enconding="utf-8";  //编码配置
        
        public static FTPClient getFTPClient() throws Exception{
            FTPClient client=new FTPClient();  //实例化FTPClient类
            client.connect(ftp_server,ftp_port);  //连接FTP服务器
            client.login(ftp_user,ftp_passwd);  //用户登录
            client.setConnectTimeout(timeout);  //设置超时时间
            client.setControlEncoding(enconding);  //设置编码
            System.out.println("【FTP连接】状态码"+client.getReplyCode());  //如果可以连接返回230
            return client;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    
    public class ftpTest {
        public static void main(String[] args) throws Exception{
            FTPClient client=ftpConnect.getFTPClient();  // 获取FTP连接
            
            System.out.println(client.abort());  //中断当前的FTP传输,如果成功返回true,否则返回false
            
            client.logout();  //注销
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    上传文件

    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    public class ftpUploadFile {
        public static void main(String[] args) throws Exception {
            String ftpPath = "/var/ftp/yootkk/";  //此目录为Linux已经存在的路径,但是子路径不存在,路径最后一定要加反斜杠!!!!
    
            FTPClient client = ftpConnect.getFTPClient();  //连接FTP服务器
    
            client.enterLocalPassiveMode();  //采用被动模式
    
            client.setFileType(FTPClient.BINARY_FILE_TYPE);  //采用二进制传输图片
    
            client.setBufferSize(2048);  //设置上传的缓存大小
    
            if (!client.changeWorkingDirectory(ftpPath)) {  //如果该路径不存在,则创建子目录
                client.makeDirectory(ftpPath);
            }
    
            //System.out.println("切换路径"+client.changeWorkingDirectory(ftpPath));
    
            File file = new File("e:"+File.separator+"phto.png");  //定义上传文件
    
            InputStream is = new FileInputStream(file);  //文件输入流
    
            String tempName=ftpPath+file.getName();  //FTP文件保存名称
    
            String ftpFileName=new String(tempName.getBytes("utf-8"),"ISO-8859-1");  //解决文件名乱码
    
            //保存文件要配置文件名称和输入流
            if(client.storeFile(ftpFileName,is)){
                System.out.println("FTP文件上传成功!");
            }else {
                System.out.println("FTP文件上传失败!");
            }
    
            System.out.println("【FTP连接】状态码"+client.getReplyCode());
    
            is.close();  //关闭输入流
            client.logout();  //注销
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    下载文件

    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    public class ftpDownloadFile {
        public static void main(String[] args) throws Exception {
            String ftpPath="/var/ftp/yootk/";  //下载路径
            
            String fileName="phtoee.png";  //下载文件名
            
            FTPClient client=ftpConnect.getFTPClient();  //连接FTP服务器
            
            client.enterLocalPassiveMode();  //采用被动模式
            
            client.setFileType(FTPClient.BINARY_FILE_TYPE);  //采用二进制传输
            
            client.setBufferSize(2048);  //设置下载缓存大小
            
            if(client.changeWorkingDirectory(ftpPath)){  //切换到下载目录
                FTPFile[] files=client.listFiles();  //获取全部文件列表
                
                for(FTPFile file:files){  //迭代当前目录所有文件
                    System.out.println(file.getName());
                    if(file.getName().equalsIgnoreCase(fileName)){  //找到要下载的文件
                        File downFile=new File("e:"+ File.separator+"download_phtoee.png");
                        //通过FTP服务器下载文件,需要利用输出流进行输出写入
                        OutputStream os=new FileOutputStream(downFile);  //获取文件输出流
                        boolean flag=client.retrieveFile(new String(file.getName().getBytes("utf-8"),"ISO-8859-1"),os);  //把当前FTP服务器上指定的文件绑定到一个专属的输出流
                        os.flush();  //刷新输出流
                        os.close();  //关闭输出流
                        System.out.println(flag?"文件下载成功!":"文件下载失败!");
                        break;
                    }
                }
                
            }
            client.logout();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    删除文件

    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    
    public class ftpDeleteFile {
        public static void main(String[] args) throws Exception {
            String filePath="/var/ftp/yootk/";
    
            String fileName="phtoee.png";
    
            FTPClient client=ftpConnect.getFTPClient();
    
            client.enterLocalPassiveMode();
    
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
    
            client.setBufferSize(2048);
    
            if(client.changeWorkingDirectory(filePath)){
                FTPFile[] files=client.listFiles();
                for(FTPFile file:files){
                    if(file.getName().equals(fileName)){
                        System.out.println(file.getName());
                        boolean flag=client.deleteFile(new String(file.getName().getBytes("utf-8"),"ISO-8859-1"));
                        System.out.println(flag?"文件删除成功!":"文件删除失败!");
                        break;
                    }
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    移动文件

    package ftp;
    
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    
    public class ftpMoveFile {
        public static void main(String[] args) throws Exception {
            String oldPath="/var/ftp/yootk/";  //文件的原始目录
    
            String newPath="/var/ftp/cjmPig/";  //文件存储的目标目录,不存在,需要创建
    
            String fileName="phto.png";  //要移动的文件名称
    
            FTPClient client=ftpConnect.getFTPClient();  //连接服务器
    
            client.enterLocalPassiveMode();
    
            client.setFileType(FTPClient.BINARY_FILE_TYPE);
    
            client.setBufferSize(2048);
    
            if(!client.changeWorkingDirectory(newPath)){  //如果新目录不存在
                client.makeDirectory(newPath);  //创建新目录
            }
    
            //要移动文件,要切换回移动的原始目录
            if(client.changeWorkingDirectory(oldPath)){
                FTPFile[] files=client.listFiles();  //获取原始目录列表
                for(FTPFile file:files){
                    System.out.println(file.getName());
                    if(file.getName().trim().equalsIgnoreCase(fileName)){  //在原始目录下找到要移动的文件
                        //移动文件
                         boolean flag=client.rename(new String(file.getName().getBytes("utf-8"),"ISO-8859-1"),newPath+new String(file.getName().getBytes("utf-8"),"ISO-8859-1"));
                        System.out.println(flag?"文件移动成功!":"文件移动失败!");
                        break;
                    }
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    21. python if else 条件判断语句
    1.4_18 Axure RP 9 for mac 高保真原型图 - 案例17 【js-echarts官网】
    MATLAB基础应用精讲-【基础知识篇】MATLAB程序优化-通过tic函数和toc函数进行程序运行分析
    matplotlib入门
    乐观构思、悲观计划、乐观实行
    [AGC058D]Yet Another ABC String
    从过滤器初识责任链设计模式
    质量评估模型助力风险决策水平提升
    C++:多态 详解
    微服务应用
  • 原文地址:https://blog.csdn.net/m0_62122789/article/details/134471172