Java從FTP服務器中獲取PDF文件數據

Java 直接讀取本地磁盤的PDF文件很容易,但是要從FTP中獲取文件數據缺需要使用工具來連接到FTP服務器,之後才能從中獲取到相應的文件數據

操作系統類型:windows

開發工具: idea

項目管理:maven

需要的jar包

<!-- commons jar -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.3.2</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.0</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.3</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.8</version>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.8.3</version>
    </dependency>
    <dependency>
      <groupId>commons-chain</groupId>
      <artifactId>commons-chain</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math3</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-digester3</artifactId>
      <version>3.2</version>
    </dependency>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>commons-dbutils</groupId>
      <artifactId>commons-dbutils</artifactId>
      <version>1.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-email</artifactId>
      <version>1.3.3</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>

執行程序

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

import java.io.IOException;
import java.io.InputStream;
/**
 * Created with CosmosRay
 *
 * @author CosmosRay
 * @date 2019/6/12
 * Function:
 */
public class PDFTest {
    public static void main(String[] args) {
        //FTP服務器的IP
        String ftpIp = "192.168.19.129";
        //FTP服務器的端口
        Integer ftpPort = 21;
        //FTP服務器的用戶名
        String ftpName = "admin";
        //FTP服務器的密碼
        String ftpPass = "admin";
        //在FTP服務器中改查詢的文件所在目錄
        String ftpDocument = "/";

        byte[] b = new byte[512];
        //文件名稱
        String fileName = "650000.pdf";

        /**
         *  登錄ftp,獲取事件
         *  這裏是ip,用戶名,密碼
         */
        FTPClient ftp = PDFTest.ftp(ftpIp, ftpPort, ftpName, ftpPass);
        if (null != ftp) {
            try {
                // 更改當前工作目錄爲文件所在的目錄
                ftp.enterLocalPassiveMode();
                ftp.changeWorkingDirectory(ftpDocument);
                // 從ftp上獲取pdf目錄下的文件
//                FTPFile[] file = ftp.listFiles();
                // 遍歷所有文件,匹配需要查找的文件
                int status = ftp.getReplyCode();
                System.out.println("FTP status = " + status);
                // 通過文件名稱匹配到的文件流傳入接口,轉化成數組集合
                InputStream in = ftp.retrieveFileStream(fileName);
                int n = 0;
                while ((n = in.read(b)) != -1) {
                    System.out.println("n  =  =:" + n);
//                    out.write(b, 0, n);
                }
                //將字節流傳往jsp
//                out.flush();
//                in.close();
//                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 功能描述
     *
     * @return org.apache.commons.net.ftp.FTPClient
     * @author CosmosRay
     * @date 2019/6/12
     */
    private static FTPClient ftp(String ip, int port, String user, String password) {
        FTPClient ftpClient = new FTPClient();
        try {
            //連接服務器登錄服務器
            ftpClient.connect(ip, port);
            ftpClient.login(user, password);
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            // 是否成功登錄服務器
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                System.out.println("connect failed...ftp:" + ip);
            } else {
                System.out.println("connect successfu...ftp:" + ip);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (!ftpClient.isConnected()) {
            ftpClient = null;
        }
        return ftpClient;
    }
}

輸入內容

connect successfu...ftp服務器:192.168.19.129
FTP status = 250

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章