ftpclient 遇到的一些问题

1. FTPFile[] files=ftpClient.listFiles(ftpDirectory); 没有数据

public static boolean ftpLogin(String server,int port,String userName,String userPassword,FTPClient ftpClient){
if(ftpClient==null){
ftpClient= new FTPClient();
}
boolean isLogin = false;
if(ftpClient!=null && ftpClient.isConnected()){
isLogin=true;
return isLogin;
}
ftpClient.setControlEncoding("GBK");
try {
if (port > 0) {
ftpClient.connect(server, port);
} else {
ftpClient.connect(server);
}
// FTP服务器连接回答
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
ToolUtils.logger.error("登录FTP服务失败!");
return isLogin;
}
ftpClient.login(userName, userPassword);
// 设置传输协议
ftpClient.enterLocalPassiveMode();    //应该是这个,没有主动打开端口接收数据
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ToolUtils.logger.warn("恭喜" + userName + "成功登陆FTP服务器");
isLogin = true;
} catch (Exception e) {
e.printStackTrace();
ToolUtils.logger.error(userName + "登录FTP服务失败!" + e.getMessage());
}
ftpClient.setBufferSize(1024 * 2);
ftpClient.setDataTimeout(30 * 1000);
return isLogin;
}

2.中文乱码

ftpClient.setControlEncoding("GBK");

3.ftpClient.storeFile(new String(filename.getBytes("UTF-8"),"iso-8859-1"),is) ;无法写入内容

3.1 ftpClient.changeWorkingDirectory(filepath);//必须写上一次目录 列:/a/a.txt  只写/a  或者/a/ 不然的话他把文件创建在根目录

3.2 服务端防火墙拦截

3.3 ftp文件没有赋予用户写入权限

4.中文目录无法进去,修改内容

ftpClient.storeFile(URLDecoder.decode(filename, "iso-8859-1"),is);//可以解决,一些人使用new string 进行转码,不能成功。具体原因我也不知道,求大神回答。

时间: 2024-10-28 11:42:20

ftpclient 遇到的一些问题的相关文章

FtpClient.storeFile返回false解决方法

参考:http://www.cnblogs.com/xiangpiaopiao2011/archive/2012/02/28/2371679.html 返回错误:ftp connect time out. 先判断是否登录成功,若登录成功之后FtpClient.storeFile还返回false,则参考下面代码 ftpClient.enterLocalPassiveMode();ftpClient.setControlEncoding("UTF-8");boolean stored =

FTPClient.listFiles()不能获取文件

今天使用ftp获取另一台服务器上的文件,发现不管切换到哪个目录,获取什么文件,调用FTPClient.listFiles()方法时返回的始终为空,但是代码又运行正常没有异常抛出. 网上查了下,发现有很多人都碰到了这个问题,解决的方式也很简单, 在调用FTPClient.listFiles()方法前,先调用FTPClient.enterLocalPassiveMode();就可以了. 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据. 为什么要

FTPClient用法

某些数据交换,我们需要通过ftp来完成. sun.net.ftp.FtpClient 可以帮助我们进行一些简单的ftp客户端功能:下载.上传文件. 但如遇到创建目录之类的就无能为力了,我们只好利用第三方源码,比如 com.enterprisedt.net.ftp.FTPClient 下面写一些sun.net.ftp.FtpClient 的使用方法. 1.引入包 import java.io.DataInputStream; import java.io.FileOutputStream; imp

ftpClient的连接超时设置

FTPClient ftpClient = new FTPClient(); ftpClient.setConnectTimeout(10*1000); // 10s,如果超过就判定超时了 ftpClient.connect(hostName, 21); http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/SocketClient.html#setConnectTimeout(int) Class

JAVA中使用FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保([email protected])创建 * @param url FTP服务器hostname

ftp中ftpClient类的API

org.apache.commons.NET.ftp  Class FTPClient类FTPClient java.lang.Object java.lang.Object继承 org.apache.commons.net.SocketClient org.apache.commons.net.SocketClient org.apache.commons.net.ftp.FTP org.apache.commons.net.ftp.FTP org.apache.commons.net.ftp

ftpClient.listFiles()无法获取ftp文件名列表

jar包commons-net-2.2.jar 引用org.apache.commons.net.ftp.* FTPFile[] fs = ftpClient.listFiles(); 获取指定目录文件名列表, 之前一直这样用,在linux上和windows上都没问题,今天不知道为什么fs长度一直是0,无法获取文件列表错误提示: org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has

ftp上传下载 java FTPClient (zhuan)

项目需要,网上搜了搜,很多,但问题也不少,估计转来转去,少了不少东西,而且也情况也不太一样.没办法,只能自己去写一个. 一,    安装sserv-u ftp服务器 版本10.1.0.1 我所设服务器配置: 用户名:shiyanming 密码:123 端口:21 跟目录:D:/ftpindex 二.所需jar包:common-net-1.4.1.jar jakarta-oro-2.0.8.jar 注意:第二个jar包必须要存在,不然在列举ftp服务器中文件是出错 三.中文传输问题 四.具体程序 

apache FtpClient上传下载删除文件夹及文件

/* * 文件名:FtpUtil.java * 描述:FTP操作 * 修改时间2014-08-10 */ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import jav

FTPClientUtil FTPclient工具

package com.ctl.util; //须要commons-net-3.0.1.jar import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.net.ftp.*; import com.ctl.util.exception.FTPClientException;