java ftp 下载流,JAVA利用FTP上传和下载文件

1f467f857e88bf7f766bdf96a745df4f.png

import java.io.File;

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.FTPFile;

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

public class FTPTools {

private static final String FTPIP = "192.168.1.1";//本地FTP连接IP地址

private static final String FTPUSERNAME = "users";//FTP连接用户名

private static final String FTPPWD = "123456";//FTP连接密码

/**

* 下载ftp上的文件

* @param applyNo

* @return

* 20141126

*/

public static boolean ftpDowload(String fileName) {

FTPClient ftp = null;

int reply;

boolean isEx = false;

try {

//中文必须先转码

String filePath = "SPResponse/" + new String(fileName.getBytes("GBK"),"iso-8859-1") + ".pdf";

ftp = new FTPClient();

ftp.connect(FTPTools.FTPIP);//打开会话

ftp.login(FTPTools.FTPUSERNAME,FTPTools.FTPPWD);//登录

//设置编码,不然下载的文件名是中文的话就会乱码

ftp.setControlEncoding("utf-8");

//响应代码(所有代码解释已列出在本文下方)

reply = ftp.getReplyCode();

if(!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return isEx;

}

ftp.enterLocalPassiveMode();

FTPFile[] fs = ftp.listFiles(filePath);

if(fs.length > 0) {

//下载到本地的路径

File localFile = new File("d:/" + fs[0].getName());

OutputStream is = new FileOutputStream(localFile);

isEx = ftp.retrieveFile(filePath ,is);

is.close();

ftp.logout();

isEx = true;

} else {

return isEx;

}

return isEx;

} catch(Exception e) {

e.printStackTrace();

} finally {

if(ftp.isConnected()) {

try {

ftp.disconnect();

} catch(IOException ioe) {}

}

}

return isEx;

}

/**

* Description: 向FTP服务器上传文件

* @param path FTP服务器保存目录

* @param filename 上传到FTP服务器上的文件名。中文必须先转码

* @param input 输入流

* @return 成功返回true,否则返回false

*/

public static boolean uploadFile(String path,String filename, InputStream input) {

boolean success = false;

FTPClient ftp = new FTPClient();

try {

int reply;

//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

ftp.connect(FTPTools.FTPIP);//打开会话

ftp.login(FTPTools.FTPUSERNAME,FTPTools.FTPPWD);//登录

//设置传输模式。如果不设置这个模式的话上传word,pdf等文件损坏

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

//响应代码(所有代码解释已列出在本文下方)

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) { //是否响应成功

ftp.disconnect();

return success;

}

ftp.enterLocalPassiveMode();

ftp.makeDirectory(path);//创建文件夹

ftp.changeWorkingDirectory(path);//定位到该路径

ftp.storeFile(filename, input);//创建文件

input.close();

ftp.logout();

success = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return success;

}

}

响应代码

解释说明

110

新文件指示器上的重启标记

120

服务器准备就绪的时间(分钟数)

125

打开数据连接,开始传输

150

打开连接

200

成功

202

命令没有执行

211

系统状态回复

212

目录状态回复

213

文件状态回复

214

帮助信息回复

215

系统类型回复

220

服务就绪

221

退出网络

225

打开数据连接

226

结束数据连接

227

进入被动模式(IP 地址、ID 端口)

230

登录因特网

250

文件行为完成

257

路径名建立

331

要求密码

332

要求帐号

350

文件行为暂停

421

服务关闭

425

无法打开数据连接

426

结束连接

450

文件不可用

451

遇到本地错误

452

磁盘空间不足

500

无效命令

501

错误参数

502

命令没有执行

503

错误指令序列

504

无效命令参数

530

未登录网络

532

存储文件需要帐号

550

文件不可用

551

不知道的页类型

552

超过存储分配

553

文件名不允许

喜欢 (0)or分享 (0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值