文件上传到FTP和从FTP上下载文件

因为以前的做的都是在本地上的上传和下载,而最近项目里要做的上传和下载,是以FTP存储方式的。所以就做了个Test测一测,感觉效果还不错,就把它记录下来吧。

package com.eastcom.faultManagement.web;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

import java.io.*;

/**
 * @Author lhj
 * @Date 2019/5/15 15:09
 */
public class TestFTP {

    public static void main(String[] args) throws Exception {
        FTPClient ftpClient=new FTPClient();//创建FTPClient对象
        ftpClient.setControlEncoding("UTF-8");//设置FTP编码
        ftpClient.setRemoteVerificationEnabled(false);//主动连接

        ftpClient.connect(ip,21);//连接FTP
        boolean flg = ftpClient.login(username, password);//登录FTP
        ftpClient.changeWorkingDirectory("/home/ipnet/upload/lhj");//连接成功打开的文件夹
        if (flg){
            System.out.println("-----连接FTP,登录成功-----");
            FTPFile[] files = ftpClient.listFiles();
            for (FTPFile file : files) {
                System.out.println(file.getName());//列出文件夹里是所有文件
            }
            down(ftpClient);
            //upload(ftpClient);
            ftpClient.disconnect();//断开连接
        }
        else
            System.out.println("--------登录失败-------");
        
    }

   public static void down(FTPClient ftpClient) throws IOException {
       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//文件传输方式
        File f=new File("D:/uploadFile/2018/数据上报123.xlsx");
        if (!f.exists())
        {
            f.getParentFile().mkdirs();
        }
        //f.createNewFile();
       OutputStream os=new FileOutputStream(f);
       FileInputStream fis=new FileInputStream(f);
       boolean flg = ftpClient.retrieveFile("数据上报.xlsx",os);
       if (flg)
           System.out.println("----文件下载成功-----");
       else
           System.out.println("----文件下载失败-----");
       fis.close();
   }

   public static void upload(FTPClient ftpClient) throws IOException{
       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//文件传输方式
       InputStream fos=new FileInputStream("D:/uploadFile/数据上报.xlsx");
       boolean flg = ftpClient.storeFile("数据上报.xlsx", fos);
       if (flg)
           System.out.println("----文件上传成功-----");
       else
           System.out.println("----文件上传失败-----");
       fos.close();
   }
}

 

你可能感兴趣的:(Java,FTP)