ftp文件上传及下载工具类

来源:互联网 发布:c语言今有雉兔同笼 编辑:程序博客网 时间:2024/06/07 15:13

1、ftp文件上传用例解析(需使用apacher的commons-net-3.3.jar)

public class TestFtp {    @Test    public void test() throws Exception {        // 1、创建FTP客户端        FTPClient ftpClient = new FTPClient();        // 2、连接ftp地址        ftpClient.connect("192.168.128.128", 21);        // 3、登录        ftpClient.login("ftpuser", "123456");        // 4、设置文件存放目录        ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");        // 5、设置上传文件类型(默认是文本)        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);        // 6、指定文件名及文件输入流,上传文件        FileInputStream is = new FileInputStream(new File("f:\\eee"));        ftpClient.storeFile("hello.jpg", is);        // 7、登出        ftpClient.logout();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2、ftp文件上传及下载工具类代码实现:

/** * @author CSDN_LQR * @TODO ftp上传下载工具类 */public class FtpUtil {    /**     * Description: 向FTP服务器上传文件     *      * @param host     *            FTP服务器hostname     * @param port     *            FTP服务器端口     * @param username     *            FTP登录账号     * @param password     *            FTP登录密码     * @param basePath     *            FTP服务器基础目录     * @param filePath     *            FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath     * @param filename     *            上传到FTP服务器上的文件名     * @param input     *            输入流     * @return 成功返回true,否则返回false     */    public static boolean uploadFile(String host, int port, String username, String password, String basePath,            String filePath, String filename, InputStream input) {        boolean result = false;        FTPClient ftp = new FTPClient();        try {            int reply;            ftp.connect(host, port);// 连接FTP服务器            // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器            ftp.login(username, password);// 登录            reply = ftp.getReplyCode();            if (!FTPReply.isPositiveCompletion(reply)) {                ftp.disconnect();                return result;            }            // 切换到上传目录            if (!ftp.changeWorkingDirectory(basePath + filePath)) {                // 如果目录不存在创建目录                String[] dirs = filePath.split("/");                String tempPath = basePath;                for (String dir : dirs) {                    if (null == dir || "".equals(dir))                        continue;                    tempPath += "/" + dir;                    if (!ftp.changeWorkingDirectory(tempPath)) {                        if (!ftp.makeDirectory(tempPath)) {                            return result;                        } else {                            ftp.changeWorkingDirectory(tempPath);                        }                    }                }            }            // 设置上传文件的类型为二进制类型            ftp.setFileType(FTP.BINARY_FILE_TYPE);            // 上传文件            if (!ftp.storeFile(filename, input)) {                return result;            }            input.close();            ftp.logout();            result = true;        } catch (IOException e) {            e.printStackTrace();        } finally {            if (ftp.isConnected()) {                try {                    ftp.disconnect();                } catch (IOException ioe) {                }            }        }        return result;    }    /**     * Description: 从FTP服务器下载文件     *      * @param host     *            FTP服务器hostname     * @param port     *            FTP服务器端口     * @param username     *            FTP登录账号     * @param password     *            FTP登录密码     * @param remotePath     *            FTP服务器上的相对路径     * @param fileName     *            要下载的文件名     * @param localPath     *            下载后保存到本地的路径     * @return     */    public static boolean downloadFile(String host, int port, String username, String password, String remotePath,            String fileName, String localPath) {        boolean result = false;        FTPClient ftp = new FTPClient();        try {            int reply;            ftp.connect(host, port);            // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器            ftp.login(username, password);// 登录            reply = ftp.getReplyCode();            if (!FTPReply.isPositiveCompletion(reply)) {                ftp.disconnect();                return result;            }            ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录            FTPFile[] fs = ftp.listFiles();            for (FTPFile ff : fs) {                if (ff.getName().equals(fileName)) {                    File localFile = new File(localPath + "/" + ff.getName());                    OutputStream is = new FileOutputStream(localFile);                    ftp.retrieveFile(ff.getName(), is);                    is.close();                }            }            ftp.logout();            result = true;        } catch (IOException e) {            e.printStackTrace();        } finally {            if (ftp.isConnected()) {                try {                    ftp.disconnect();                } catch (IOException ioe) {                }            }        }        return result;    }    public static void main(String[] args) {        try {            FileInputStream in = new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));            boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images",                    "/2015/01/21", "gaigeming.jpg", in);            System.out.println(flag);        } catch (FileNotFoundException e) {            e.printStackTrace();        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152

懒人地址:http://download.csdn.net/detail/csdn_lqr/9692906

0 0