资源简介

Java实现与FTP服务器的数据传输。 其中包含了两种实现方法。详情请参见本人博客: http://blog.csdn.net/lemon_tree12138/article/details/49777467

资源截图

代码片段和文件信息

package com.ftp.sockettran;

import org.ftp.transmission.config.Config;
import org.ftp.transmission.tools.Tools;

import java.io.*;
import java.net.Socket;
import java.util.StringTokenizer;

/**
 * 基于Socket的FTP数据传输测试
 * Created by Naga on 2015/11/11.
 */
public class FtpSocketClient {

    Socket mFtpClient = null;
    BufferedReader mReader = null;
    BufferedWriter mWriter = null;

    /**
     * 连接FTP服务器
     */
    public void connectFtp() {
        try {
            mFtpClient = new Socket(Config.FTP.HOST_IP Config.FTP.HOST_PORT);
            mReader = new BufferedReader(new InputStreamReader(mFtpClient.getInputStream()));
            mWriter = new BufferedWriter(new OutputStreamWriter(mFtpClient.getOutputStream()));

            sendCommand(“USER “ + Config.FTP.FTP_USERNAME);
            sendCommand(“PASS “ + Config.FTP.FTP_PASSWD);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 关闭FTP的Socket连接
     */
    public void disconnectFtp() {
        if (mFtpClient == null) {
            return;
        }

        if (!mFtpClient.isConnected()) {
            return;
        }

        try {
            mFtpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获得Socket的连接状态
     * @param socket
     *          待检查的socket
     * @return
     */
    private boolean socketStatus(Socket socket) {
        if (socket == null || !socket.isConnected()) {
            return false;
        }
        return true;
    }

    /**
     * 向FTP服务器发送命令
     * @param command
     *          FTP命令
     * @throws IOException
     */
    private void sendCommand(String command) throws IOException {
        if (Tools.StringTools.isEmpty(command)) {
            return;
        }

        if (mFtpClient == null) {
            return;
        }

        mWriter.write(command + “\r\n“);
        mWriter.flush();
    }

    /**
     * 下载文件
     * @param localPath
     *          本地文件路径
     * @param ftpPath
     *          服务器文件路径
     * @throws IOException
     */
    public void downloadFile(String localPath String ftpPath) throws IOException {
        // 进入被动模式
        sendCommand(“PASV“);

        // 获得ip和端口
        String response = readNewMessage();
        String[] ipPort = getIPPort(response);
        String ip = ipPort[0];
        int port = Integer.parseInt(ipPort[1]);

        // 建立数据端口的连接
        Socket dataSocket = new Socket(ip port);
        sendCommand(“RETR “ + ftpPath);

        // 下载文件前的准备
        File localFile = new File(localPath);
        InputStream inputStream = dataSocket.getInputStream();
        FileOutputStream fileOutputStream = new FileOutputStream(localFile);

        // 下载文件
        int offset;
        byte[] bytes = new byte[1024];
        while ((offset = inputStream.read(bytes)) != -1) {
            fileOutputSt

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-12 16:48  TransmissionOnFTP\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\.idea\
     文件          17  2015-11-11 00:21  TransmissionOnFTP\.idea\.name
     文件         686  2015-11-11 00:21  TransmissionOnFTP\.idea\compiler.xml
     目录           0  2015-11-12 16:48  TransmissionOnFTP\.idea\copyright\
     文件          76  2015-11-11 00:21  TransmissionOnFTP\.idea\copyright\profiles_settings.xml
     文件         660  2015-11-11 13:49  TransmissionOnFTP\.idea\encodings.xml
     目录           0  2015-11-12 16:48  TransmissionOnFTP\.idea\libraries\
     文件         229  2015-11-11 00:55  TransmissionOnFTP\.idea\libraries\commons_net_2_2.xml
     文件         873  2015-11-11 19:06  TransmissionOnFTP\.idea\misc.xml
     文件         274  2015-11-11 00:21  TransmissionOnFTP\.idea\modules.xml
     文件        8792  2015-11-11 00:24  TransmissionOnFTP\.idea\uiDesigner.xml
     文件       52533  2015-11-12 16:48  TransmissionOnFTP\.idea\workspace.xml
     目录           0  2015-11-12 16:49  TransmissionOnFTP\data\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\libs\
     文件      212453  2010-11-17 00:53  TransmissionOnFTP\libs\commons-net-2.2.jar
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\com\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\
     文件        6707  2015-11-11 10:47  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\Client.class
     文件        6634  2015-11-11 11:09  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\FTPRead.class
     文件        6116  2015-11-12 16:36  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\FtpSocketClient.class
     文件        6119  2015-11-11 10:47  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\Server.class
     文件        3718  2015-11-11 12:52  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\UpdateReceiver$DownloadThread.class
     文件        2533  2015-11-11 12:52  TransmissionOnFTP\out\production\TransmissionOnFTP\com\ftp\sockettran\UpdateReceiver.class
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\org\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\org\ftp\
     目录           0  2015-11-12 16:48  TransmissionOnFTP\out\production\TransmissionOnFTP\org\ftp\transmission\
............此处省略25个文件信息

评论

共有 条评论