列宿乃施于上荣兮 日月才经于柍桭

………… 白驹过隙 岁月如斯 梦萦回绕 心灵之声
posts - 57, comments - 8, trackbacks - 0, articles - 41
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java实现FTP传输文件(一)

Posted on 2007-05-18 19:22 默认为零 阅读(1118) 评论(0)  编辑  收藏 所属分类: 技术

  基于Java的ftp传输文件方式有2种,一种是利用Runtime.getRuntime().exec()执行操作系统的ftp命令,达到ftp的目的,另一种是利用Apache commons-ftp工具包实现ftp的功能,不同的方法,可以达到相同的效果。这里简单介绍下用Java Runtime调用执行ftp的例子。

  下面是最近正巧做的利用Runtime执行操作系统的批处理脚本执行ftp文件传输功能的例子,程序生成脚本如下:

  Windows脚本

open 目标IP
用户名
密码
cd 目标路径
asc
prompt
put 本地文件(完整路径)
bye


  Unix脚本

ftp -n -i 目标IP <<!EOF
user 用户名 密码
cd 目标路径
lcd 本地文件路径
asc
prompt
put 本地文件
bye
!EOF

  这里传送的是文本文件,所以采用asc模式传输。然后Java Runtime执行命令 [Runtime.getRuntime().exec(cmd)] 如下:

  Windows命令

ftp -s:脚本文件(完整路径)


  Unix命令

sh 脚本文件(完整路径)


  以上如果都使用的是用户当前工作目录user.dir作为焦点目录,则其实都可以省去(完整路径)的定位。可是在服务器上用户权限有所控制,user.dir无法提供当前用户写入文件,所以只能麻烦一点另找目录定位路径。好了,其实也一样。

  这样,ftp上传功能就完成了,当然,这里的前提是这个脚本生成不能有误。如果输入的参数有错误,脚本执行过程中返回的错误Runtime是没有捕获的。所以,如果需要知道ftp过程中的每一步是否出错,出的什么错,最好使用Apache的commons-ftp包处理(使用FTPClient),网路上有很多相关的例子,可以找来看看。


只有注册用户登录后才能发表评论。


网站导航: