検索
ホームページJava&#&チュートリアルJavaでFTPダウンロードを使用する方法

1. FTP の説明

FTP は、FileTransferProtocol の英語の略称で、TCP/IP プロトコルの 1 つであり、TCP/IP プロトコル グループに属します。制御ファイルを両方向に転送します。同時にそれは応用(アプリケーション)でもあります。 FTP アプリケーションはオペレーティング システムによって異なりますが、すべてのアプリケーションは同じプロトコルに従ってファイルを転送します。プロトコルは 2 つの部分で構成され、1 つは FTP サーバー、もう 1 つは FTP クライアントです。

2. ダウンロードのアイデア

(1) ファイル タイプ (バイナリ) を設定します

(2) FTP に対応するファイル入力ストリーム ftp を処理しますクライアント オブジェクトと FTP ファイル入力ストリーム

(3) 処理されたファイルのリスト。

(4) 現在のファイル名を処理します。

3 .FTP ダウンロードの例

    /**
     *
     * JAVA操作 FTP 下载
     * 文件下载。
     *
     */
    private void ftpDownload()
    {
        FTPClient ftpClient = null;
        InputStream input = null;
        boolean loginFlag = false;
        List<String> list = new ArrayList<String>();
        try
        {
            int defaultPort = CommonsMessage.FTP_DEFAULT_PORT; // 21
            int timeout = M400Constant.NUM_SIXTY_THOUSAND * M400Constant.NUM_TWO; // 120000
            ftpClient = new FTPClient();
 
            ftpClient.setDefaultPort(defaultPort);
            ftpClient.setConnectTimeout(timeout);
//            ftpClient.setSoTimeout(timeout);
            ftpClient.setDefaultTimeout(timeout);
            ftpClient.setDataTimeout(timeout);
            ftpClient.setControlEncoding("UTF-8");
            FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
            conf.setServerLanguageCode("en");
            conf.setDefaultDateFormatStr("MMM dd HH:mm");
            ftpClient.configure(conf);
 
            ftpClient.connect(SystemConfig.getKey("scpFtpIp"));
            loginFlag = ftpClient.login(SystemConfig.getKey("scpFtpUserName").trim(),
                    SystemConfig.getKey("scpFtpPassword").trim());
            String ftpDir = SystemConfig.getKey("ftpHangupDir").trim();
            if (!loginFlag)
            {
                DEBUGGER.debug("login scp ftp is :" + loginFlag);
            }
            // String ftpDir = SystemConfig.getKey("ftpHangupDir").trim();
 
            if (ftpClient.changeWorkingDirectory(ftpDir))
            {
                
 
                FTPFile file[] = ftpClient.listFiles(ftpDir);
 
                if (file != null && file.length > 0)
                {
                    DEBUGGER.debug("hungup file size is:  " + file.length);
                    for (int i = 0; i < file.length; i++)
                    {
                        String fileName = file[i].getName();
                        ftpClient.setBufferSize(CommonsMessage.ONE_K_BUFFER_SIZE);
 
                        // 设置文件类型(二进制)
                        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
 
                        input = ftpClient.retrieveFileStream(fileName);
                        processInput(ftpClient, input, list, fileName);
 
                        // if (downFlag) {
                        // ftpClient.deleteFile(fileName);
                        // }
                    }
                }
                else
                {
                    try
                    {
                        Thread.sleep(M400Constant.NUM_FIVE_THOUSAND);
                    }
                    catch (InterruptedException e)
                    {
                        /*
                         * if (DEBUGGER.isDebugEnable()) {
                         * DEBUGGER.debug("Failed to queryScpToQuery", e); }
                         */
                        error("Failed to queryScpToQuery", e);
                    }
                }
 
            }
            else
            {
                DEBUGGER.debug("scp dir is error ");
            }
 
        }
        catch (Exception e)
        {
            /*
             * DEBUGGER.debug("dowonload file is faild  ", e);
             */
            error("dowonload file is faild  ", e);
        }
        finally
        {
            close(input, "close inputStream  is faild  ");
            if (ftpClient != null)
            {
                try
                {
                    deleteFile(ftpClient, list);
                    boolean logoutFlag = false;
                    try
                    {
                        logoutFlag = ftpClient.logout();
                        // DEBUGGER.debug("logout : " + logoutFlag);
                    }
                    catch (Exception e)
                    {
                        /*
                         * DEBUGGER.debug("logout : " + logoutFlag);
                         */
                        error("logout : " + logoutFlag, e);
                    }
                    ftpClient = null;
                }
                catch (Exception e)
                {
                    /*
                     * if (DEBUGGER.isDebugEnable()) {
                     * DEBUGGER.error("Failed to ftpDownload", e); }
                     */
                    error("Failed to ftpDownload", e);
                }
                // try {
                // ftpClient.disconnect();
                // } catch (IOException e) {
                // if (DEBUGGER.isDebugEnable()) {
                // DEBUGGER.debug("Failed to ftpDownload", e);
                // }
                // }
            }
        }
    }
 
    /**
     * 处理ftp对应文件输入流。
     *
     * @param ftpClient
     *            ftp客户端对象
     * @param input
     *            ftp文件输入流
     * @param list
     *            处理完毕的文件列表,用于执行文件删除使用
     * @param fileName
     *            当前处理的文件名称
     */
    private void processInput(FTPClient ftpClient, InputStream input, List<String> list, String fileName)
    {
        if (input == null)
        {
            return;
        }
        // boolean downFlag = callingService(input);
        callingService(input);
        try
        {
            input.close();
            ftpClient.completePendingCommand();
            list.add(fileName);
        }
        catch (Exception e)
        {
            /*
             * DEBUGGER.debug("Failed to ftpDownload", e);
             */
            error("Failed to ftpDownload", e);
        }
    }
}

以上がJavaでFTPダウンロードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター