知识大全 对JAVA的两个FTP包进行比较分析

Posted 文件

篇首语:博观而约取,厚积而薄发。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对JAVA的两个FTP包进行比较分析相关的知识,希望对你有一定的参考价值。

对JAVA的两个FTP包进行比较分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   ftp *;

  这是一个不被官方支持的 但是放在JDK下面的FTP包 正因为不被支

  持 所以没有官方提供API 这是其最大的缺陷之一 最重要由于不是官方支持的

  所以文档也是没有的

  [url]l[/url]

  这里有该包的API

  先给一个简单的例子 (例子来源互联网)

   )显示FTP服务器上的文件

  void ftpList_actionPerformed(ActionEvent e)

  String server=serverEdit getText();//输入的FTP服务器的IP地址

  String user=userEdit getText(); file://登/录FTP服务器的用户名

  String password=passwordEdit getText();//登录FTP服务器的用户名的口令

  String path=pathEdit getText();//FTP服务器上的路径

  try

  FtpClient ftpClient=new FtpClient();//创建FtpClient对象

  ftpClient openServer(server);//连接FTP服务器

  ftpClient login(user password);//登录FTP服务器

  if (path length()!= ) ftpClient cd(path);

  TelnetInputStream is=ftpClient list();

  int c;

  while ((c=is read())!= )

  System out print((char) c);

  is close();

  ftpClient closeServer();//退出FTP服务器

   catch (IOException ex) ;

  

   )从FTP服务器上下传一个文件

  void getButton_actionPerformed(ActionEvent e)

  String server=serverEdit getText();

  String user=userEdit getText();

  String password=passwordEdit getText();

  String path=pathEdit getText();

  String filename=filenameEdit getText();

  try

  FtpClient ftpClient=new FtpClient();

  ftpClient openServer(server);

  ftpClient login(user password);

  if (path length()!= ) ftpClient cd(path);

  ftpClient binary();

  TelnetInputStream is=ftpClient get(filename);

  File file_out=new File(filename);

  FileOutputStream os=new

  FileOutputStream(file_out);

  byte[] bytes=new byte[ ];

  int c;

  while ((c=is read(bytes))!= )

  os write(bytes c);

  

  is close();

  os close();

  ftpClient closeServer();

   catch (IOException ex) ;

  

   )向FTP服务器上上传一个文件

  void putButton_actionPerformed(ActionEvent e)

  String server=serverEdit getText();

  String user=userEdit getText();

  String password=passwordEdit getText();

  String path=pathEdit getText();

  String filename=filenameEdit getText();

  try

  FtpClient ftpClient=new FtpClient();

  ftpClient openServer(server);

  ftpClient login(user password);

  if (path length()!= ) ftpClient cd(path);

  ftpClient binary();

  TelnetOutputStream os=ftpClient put(filename);

  File file_in=new File(filename);

  FileInputStream is=new FileInputStream(file_in);

  byte[] bytes=new byte[ ];

  int c;

  while ((c=is read(bytes))!= )

  os write(bytes c);

  is close();

  os close();

  ftpClient closeServer();

   catch (IOException ex) ;

  

  

  看了这个例子 应该就能用他写东西了

  这个包缺点很多 首先就是不被支持也不被官方推荐使用

  其次是这个包功能过于简单 简单到无法区分FTP服务器上的File是文件还是目录 有人说

  通过返回的字符串来判断 但是据说FTP在不同系统下返回的东西不大一样 所以如果通过

  判断字符串会有不好移植的问题

  自己想出了一个办法 通过FtpClient中的cd方法来判断

   代码如下

  try

  ftp cd(file);//file为当前判断的文件

  //如果过了说明file是目录

  

  catch(IOException e)

  //说明file是文件

  

  finally

  ftp cd( );//返回上级目录继续判断下一文件

  

  我用这种方法做过尝试 结果是只能判断正确一部分 有些目录仍会被认做文件 不知道

  是我的方法有错还是别的什么原因

  如果对FTP服务没有过高的要求 使用这个包还是不错的 因为他本身就包含在JDK中 不

  存在CLASSPATH的问题 不需要导入外部包 较为方便

   ftp *;

  这个包在Jakarta Commons Net library里 现在的最高版本是 可以从以下地址

  下载

  [url] net [/url]

   zip

  里面包含了打包好的jar API 及全部的class文件

  [url] net [/url]

   src zip

  这里包含一些例子以及全部的代码

  给出一个该包的例子

  

  import ftp *;

  

  public static void getDataFiles( String server

  String username

  String password

  String folder

  String destinationFolder

  Calendar start

  Calendar end )

  

  try

  

  // Connect and logon to FTP Server

  FTPClient ftp = new FTPClient();

  nnect( server );

  ftp login( username password );

  System out println( Connected to +

  server + );

  System out print(ftp getReplyString());

  // List the files in the directory

  ftp changeWorkingDirectory( folder );

  FTPFile[] files = ftp listFiles();

  System out println( Number of files in dir: + files length );

  DateFormat df = DateFormat getDateInstance( DateFormat SHORT );

  for( int i= ; i

  

  Date fileDate = files[ i ] getTimestamp() getTime();

  if( pareTo( start getTime() ) >= &&

  pareTo( end getTime() ) <= )

  

  // Download a file from the FTP Server

  System out print( df format( files[ i ] getTimestamp() getTime() ) );

  System out println( \\t + files[ i ] getName() );

  File file = new File( destinationFolder +

  File separator + files[ i ] getName() );

  FileOutputStream fos = new FileOutputStream( file );

  ftp retrieveFile( files[ i ] getName() fos );

  fos close();

  file setLastModified( fileDate getTime() );

  

  

  // Logout from the FTP Server and disconnect

  ftp logout();

  ftp disconnect();

  

  catch( Exception e )

  

  e printStackTrace();

  

  

  同 ftp相同 都是先建立FtpClient(注意两包的大小写不同)的实例 然后通过

  connect()方法连接 login()方法登陆 但是 ftp *明显比sun

  net ftp功能强大很多

   ftp *包将FTP中的file单独出来成为了一个新类FTPFile 还有

  类FTPFileEntryParser parse 没有仔细研究 但是从字面来看应该是转化为某种形势的

  类 有待研究

  同时这个mons net jar包中也提供了FTP服务器 telnet mail等一系列类库

   ftp *包的缺点在于需要设置classpath 并且需要下载jakarta

   oro jar这个包才能运行(如果没有这个包 会在ftp listFiles()方法后抛出找不

  到class异常) 此包无须在代码中import 只需设置在classpath中即可 下载地址

  [url] oro zip[/url]

  如果想要强大的FTP服务 那么 ftp *包应该是你的最好选择 而

  且也是开源 免费的

  这个包的问题是:

  使用Jakarta Commons Net library需要在环境变量里面编辑classpath

  这是不方便的地方

cha138/Article/program/Java/hx/201311/27057

相关参考

知识大全 Java FTP客户端类库比较

JavaFTP客户端类库比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  「导读」本文介绍了在

知识大全 用Java实现FTP服务器解决方案

用Java实现FTP服务器解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  FTP命令  

知识大全 使用Java实现FTP服务器

使用Java实现FTP服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 对Java提供的两个Map进行的性能测试

对Java提供的两个Map进行的性能测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对jav

知识大全 对Java 提供的两个Map 进行了性能测试

对Java提供的两个Map进行了性能测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对jav

知识大全 关于java.util.regex 包中新增字符替换方法的比较

  代码如下:  importjavautilregex*;    publicclassregex     publicregex()          publicstaticStringrepl

知识大全 Bat脚本处理ftp超强案例分析

Bat脚本处理ftp超强案例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!前言公司有几百台wi

知识大全 比较JAVA的两个设备访问API

比较JAVA的两个设备访问API  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在最近的一次研讨

知识大全 获取ServerSocket信息的方法及FTP原理

Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发

知识大全 跟你一起分析JAVA中文比较问题的解决

跟你一起分析JAVA中文比较问题的解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java的