Java遍历(扫描)ftp站点资源的方法.doc_第1页
Java遍历(扫描)ftp站点资源的方法.doc_第2页
Java遍历(扫描)ftp站点资源的方法.doc_第3页
Java遍历(扫描)ftp站点资源的方法.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java遍历(扫描)ftp站点资源的方法1.首先需要2个ftp的辅助jar包。(commons-net-1.4.1.jar和jakarta-oro-2.0.8.jar),这个可以自己去百度搜索一下并build path,然后就建一个类叫ListFtp后就能直接把下面的源代码复制然后运行了(当然你需改动里面你要扫描的ftp站点,和登陆用户名,密码这3样信息就OK了)。2.遍历并打印在ftp里面扫描到的资源信息,主要还是用到递归思想。如果当前遍历的是文件夹,则继续向下一层目录遍历,如果是文件则打印出来。这里如果想保存资源信息的话可以自己写一个连接数据库的代码,然后把我那代码打印资源信息的地方改成插入到数据库即可。源代码:import java.io.IOException;import java.math.BigDecimal;import java.util.Date;import .ftp.FTP;import .ftp.FTPClient;import .ftp.FTPFile;import .ftp.FTPReply;/* * 此类是直接可以运行,然后扫描 * 我这扫描的ftp站点是自己电脑上建立的,外网扫描不到。 * 如果要用此代码只需要改一下main函数里的ftp站点就能直接运行 * */public class ListFtp private int recNum = 0;public static void main(String args) throws Exception ListFtp listFtp = new ListFtp();/要扫描的ftp站点地址,用户名和密码,其中地址不用填前半部分信息。/如果ftp不需要用户名和密码就能直接进入其实是匿名登录方式。此时用户名是:anonymous,密码为空/如:listFtp.loginFtp(, anonymous, );FTPClient ftp = listFtp.loginFtp(02, liuli, 0425);listFtp.traverse(02, ftp, ftp.printWorkingDirectory();System.out.println(总共有 + listFtp.recNum +个文件。);System.out.println(-);listFtp.ftpClose(ftp);/Ftp登陆,注意此处host不能带ftp:/,直接传入站点后半部分就可以了public FTPClient loginFtp(String host, String user, String pass) int reply;boolean loginFlag = false;FTPClient ftp = new FTPClient();ftp.setControlEncoding(GBK);try ftp.connect(host);System.out.println(Connected to + host);System.out.print(ftp.getReplyString();reply = ftp.getReplyCode();ftp.setFileTransferMode(FTP.ASCII_FILE_TYPE);if (!FTPReply.isPositiveCompletion(reply) ftp.disconnect();System.err.println(FTP server refused connection.);System.exit(1);loginFlag = ftp.login(user, pass); catch (IOException e) e.printStackTrace();if (loginFlag) System.out.println(login success);System.out.println(host + host);return ftp; else System.out.println(login failed);return null;/与ftp断开连接public void ftpClose(FTPClient ftp) try ftp.logout(); catch (IOException e) e.printStackTrace();if (ftp.isConnected() try ftp.disconnect(); catch (IOException ioe) ioe.printStackTrace();System.out.println(与ftp断开连接!);/ 遍历并打印ftp站点资源信息public void traverse(String host, FTPClient client, String path) String prefix = ;try FTPFile files = client.listFiles(path);for (int i = 0; i files.length; i+) / 如果是文件夹就递归方法继续遍历if (filesi.isDirectory() /* * 创建新目录时会自动创建两个文件名: . 和 . 点指当前目录 点点指父目录 */ 注意这里的判断,否则会出现死循环if (!filesi.getName().equals(.)& !filesi.getName().equals(.) String tempDir = client.printWorkingDirectory() + /+ filesi.getName();client.changeWorkingDirectory(tempDir);/ 是文件夹就递归调用traverse(host, client, tempDir);prefix += client.printWorkingDirectory();client.changeToParentDirectory();/ 如果是文件就扫描信息 else String temp = client.printWorkingDirectory();Date date = null;/ 根目录下的文件if (temp.equals(/) recNum+;date = filesi.getTimestamp().getTime();java.sql.Date date2 = new java.sql.Date(date.getTime();System.out.println(文件名: + filesi.getName();System.out.println(文件路径: + host + temp);System.out.println(文件大小: + format(filesi.getSize();System.out.println(最后修改日期: + date2);System.out.println(-);/ 不是根目录下的文件 else recNum+;/ 得到文件的时间戳date = filesi.getTimestamp().getTime();/ 转换成保存到数据库的时间格式java.sql.Date date2 = new java.sql.Date(date.getTime();/ 如果扫描是文件就将信息保存到数据库System.out.println(文件名: + filesi.getName();System.out.println(文件路径: + host + temp + /);System.out.println(文件大小: + format(filesi.getSize();System.out.println(最后修改日期: + date2);System.out.println(-); catch (IOException e) e.printStackTrace();/ 转换文件大小的方法public String format(long size) if (size 1024) return size + B; else if (size 1048576) double beforeNum = size / 1024;double temp = size % 1024;double afterNum = temp / 1024;/ 取小数点后1位double num = new BigDecimal(beforeNum + afterNum).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();return num + KB; else if (size 1073741824) double beforeNum = size / 1048576;double temp = size % 1048576;double afterNum = temp / 1048576;double num = new BigDecimal(beforeNum + afterNum).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();return num + MB; else double befo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论