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

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

    • 连接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;
    }
}
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();  //注销
    }
}

上传文件

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();  //注销
    }
}

下载文件

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();
    }
}

删除文件

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;
                }
            }
        }
    }
}

移动文件

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;
                }
            }
        }
    }
}

你可能感兴趣的:(学习笔记,开发语言,学习,笔记,java,服务器)