java FTP文件上次和下载

先给各位大佬问声好,小编今天写了一个FTP上传/下载方法希望能够帮助要大家。

话不多说上代码!!!!!!!!!!

第一步:先写一个FTP连接工具类

public class FTPconnection {
    private static final String FTP_SERVER = "192.168.182.128"; // 服务地址
    private static final int FTP_PORT = 21;  //端口号
    private static final String FTP_USER = "ftp123"; // 用户名
    private static final String FTP_PASSWORD = "ftp123#";//用户密码
    private static final int TIMEOUT = 5000; // 设置超时时间
    private static final String ENCODING = "UTF-8";//设置数据编码格式
   private static final String ftp="文件名称";//ftp获取下载文件名称
    public static FTPClient getFTPClient() throws Exception {
        FTPClient client = new FTPClient(); // 实例化FTPClient类实例
        client.connect(FTP_SERVER, FTP_PORT); // 设置连接主机信息
        client.login(FTP_USER, FTP_PASSWORD); // 实现服务登录
        client.setConnectTimeout(TIMEOUT); // 超时时间
        client.setControlEncoding(ENCODING); // 编码
        System.out.println("【FTP连接】状态码" + client.getReplyCode()); // 如果可以连接返回230
        return client;
    }
}

上传文件方法方法:

public static void  setFTP(String  s) throws Exception {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyMMdd");
        Date date=new Date();
        String format = sdf.format(date); //会时间命名生成一个文件夹
        String ftpPath = "/home/ftp123/"+format+"/"; // 此目录为Linux已经存在的路径,但是子路径不存在
        FTPClient client = FTPconnection.getFTPClient(); // 获取FTP连接
        client.enterLocalPassiveMode(); // 采用被动模式
        client.setFileType(FTPClient.BINARY_FILE_TYPE); // 采用二进制传输
        client.setBufferSize(2048); // 设置上传的缓存大小
        if (!client.changeWorkingDirectory(ftpPath)) {  // 切换目录
            client.makeDirectory(ftpPath); // 目录的创建
        }
        File file = new File("e:" + File.separator + s); // 定义上传文件
        // 所有的文件是以二进制数据流的形式进行传输的,所以一定要通过InputStream获取一个输入流
        InputStream input = new FileInputStream(file); // 文件输入流
        String tempName = ftpPath + file.getName(); // FTP文件保存名称
        String ftpFileName = new String(tempName.getBytes("UTF-8"), "ISO-8859-1");
        // 在进行文件保存的需要明确配置存储文件的名称,同时利用输入流进行数据的传输
        boolean b = client.storeFile(ftpFileName, input);
        if (b) {
            System.out.println("FTP文件上传成功!");
        } else {
            System.out.println("FTP文件上传失败!");
        }
        input.close(); // 传输完成后关闭输入流
        client.logout(); // 注销
    }

下载文件方法:

public static void  getFTP(String  sjian) throws Exception {
        String ftppath="/home/ftp123/"+sjian;//ftp已经存在的目录
        String ftp="文件名称";//ftp获取下载文件
        FTPClient client =FTPconnection.getFTPClient();
        client.enterLocalPassiveMode();//采用被动模式
        client.setFileType(FTPClient.BINARY_FILE_TYPE);//二进制
        client.setBufferSize(2048);//设置上次缓存大小
        if (client.changeWorkingDirectory(ftppath)){
            FTPFile[] ftpFiles = client.listFiles();
            for (FTPFile file : ftpFiles) {
                if (file.getName().trim().equalsIgnoreCase(ftp)) { // 找到了匹配的文件名称
                    // 为了可以区分出下载文件,本次进行一个强制性的命名
                    File downFile = new File("f:" + File.separator + ftp);
                    // 要通过FTP下载文件,是需要利用输出流进行输出写入的
                    OutputStream output = new FileOutputStream(downFile); // 获取文件流
                    boolean flag = client.retrieveFile(new String(file.getName().getBytes("UTF-8"), "ISO-8859-1"), output);
                    output.flush();
                    output.close();
                    System.out.println(flag ? "文件下载成功!" : "文件下载失败!");
                }
            }
        }
        client.logout();
    }

  有不同的意见欢迎留言讨论!!!!!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值