Java ftp 文件上传和下载

package com.iflytek.ftp.socket;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class Util {

public static FTPClient ftpClient = new FTPClient();

/**
 * 
 * getConnect:{链接ftp服务器}. <br/>
 * @author xwhe
 * @return
 * @throws Exception
 * @created 2017年12月28日 下午2:00:07 <br/>
 * @since JDK 1.6
 */
public static boolean getConnect() throws Exception {
    // 连接FTP服务器
    ftpClient.connect("172.16.26.139", 21);  // IP 端口
    // 登录FTP服务器
    ftpClient.login("study", "1111"); // 用户名 密码
    // 验证FTP服务器是否登录成功
    int replyCode = ftpClient.getReplyCode(); //ftp客户端代码
    if (!FTPReply.isPositiveCompletion(replyCode)) {
        return false;
    }
    return true;
}

/**
* * 下载文件 *
* @param hostname FTP服务器地址 *
* @param port FTP服务器端口号 *
* @param username FTP登录帐号 *
* @param password FTP登录密码 *
* @param pathname FTP服务器文件目录 *
* @param filename 文件名称 *
* @param localpath 下载后的文件路径 *
* @throws UnsupportedEncodingException
*/
public static boolean downloadFile(String pathname,
String filename, String localpath) throws Exception {
boolean flag = false;
ftpClient.setControlEncoding(“GBK”);
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode(“zh”);
try {
flag = getConnect();
// 切换(定位)FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
if (filename.equalsIgnoreCase(file.getName())) {
File localFile = new File(localpath + “/” + file.getName());
OutputStream os = new FileOutputStream(localFile);
//ftp服务器检索命名文件并将其写入给定的OutputStream中。
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
System.out.println(“已成功下载”);
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.logout();
} catch (IOException e) {

            }

        }
    }
    return flag;
}

/**
* 上传文件
* @param hostname ftp服务器地址
* @param port ftp服务器端口号
* @param username ftp登录账号
* @param password ftp登录密码
* @param pathname ftp服务保存地址
* @param fileName 上传到ftp的文件名
* @param inputStream 输入文件流
* @return
 * @throws UnsupportedEncodingException 
*/
@SuppressWarnings({ "static-access", "unused" })
public static boolean uploadFile(String pathname, String fileName,
        InputStream inputStream) throws Exception {
    boolean flag = false;
    //解决中文乱码
     ftpClient.setControlEncoding("GBK");
     FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
     conf.setServerLanguageCode("zh"); 
    try {
        flag = getConnect();
        //文件类型为二进制文件
        ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
        //创建文件目录
        ftpClient.makeDirectory(pathname);
        //工作路径切换  
        ftpClient.changeWorkingDirectory(pathname);
        //上传
        ftpClient.storeFile(fileName, inputStream);
        inputStream.close();
        //断开和ftp服务器之间的连接
        ftpClient.logout();
        flag = true;
        System.out.println("已成功上传");
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (ftpClient.isConnected()) {
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    return true;
}

public static void main(String[] args) throws Exception {
    //文件上传
    uploadFile("/上传", "测试中文乱码.txt", new FileInputStream(new File("F:/KuGou/测试中文乱码.txt")));
    //文件下载
    downloadFile("/下载", "新建文本文档.txt", "F:/KuGou");
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值