`
qdpurple
  • 浏览: 272969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ftp ssl连接使用FTPSClient类list 服务器端文件为null文件解决

 
阅读更多

关于问题我在java通过ftp(ssl) 连接ftp服务器成功,怎么list文件中已描述:

具体就是 在通过使用FTPSClient类进行ssl ftp的连接 可以连接成功,但list() ,listNames()或listFiles() 为null.

解决办法:

在ist方法之前调用了  

SocketFactory factory = SSLSocketFactory.getDefault();

sftpClient.setSocketFactory(factory);

具体为:

       sftpClient.enterLocalPassiveMode();
 /* important */
       SocketFactory factory=null;
	 factory= SSLSocketFactory.getDefault();
	sftpClient.setSocketFactory(factory);
	
	/* list所在目录的文件 返回文件名到数组中
          通过for循环进行遍历控制台打印
	*/
	String[] fileNames = sftpClient.listNames();
	for(String fileName:fileNames){
			logger.info(fileName);	
	}

 
然后listFiles(). 成功!

1.为什么调用此方法后 就可以list文件了? 

初步分析:sftpclient(FTPSClient)连接方法是调用父类(FTPClient)方法,而其本身使用的ssl加密的相关方法在父类中并没有被实现,此方法(setSocketFactory)作用是调用设置了生成此类的工厂为SSLSocketFactory,进而实现ssl的相关功能.

备注: 由于本人代码写的较乱,没有粘贴完整代码,若有需要欢迎留言所要.

 

分享到:
评论
2 楼 qdpurple 2011-08-12  
老汉学编程 写道
总的commons-net包通过SSL协议连接成功的代码贴出来看看,我被这个问题困扰了好久

你好! 这是我上份工作的代码,现在离开了,没有保留代码,望谅解!
1 楼 老汉学编程 2011-08-09  
总的commons-net包通过SSL协议连接成功的代码贴出来看看,我被这个问题困扰了好久

相关推荐

Global site tag (gtag.js) - Google Analytics