1. package com.util;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. /**
  9. * 自动扫描FTP文件工具类
  10. * 需要定时执行
  11. */
  12. public class ScanFtp {
  13. //服务器图片路径文件夹
  14. private String serverLocal = "D:/TOOLS/Tomcat 6.0/webapps/BCCCSM/modelforcast/";
  15. //图片上传文件夹存放路径,文件夹内应包含AGCM CSM ZS 3个子文件夹分别存放需要扫描到tomcat中的图片
  16. private String saveLocal = "D:/modelForcast/";
  17. /**
  18. * 获得远程权限
  19. * @return
  20. */
  21. private void getFTPAdress(){
  22. //登陆成功
  23. }
  24. /**
  25. * 开始扫描
  26. * @throws IOException
  27. */
  28. private void scan() throws IOException {
  29. this.getFTPAdress();
  30. File file = new File(saveLocal + "AGCM");  //打开AGCM
  31. File[] array = file.listFiles();
  32. String fileName;
  33. File fileTemp;
  34. for(int i = 0; i < array.length; i++){
  35. if(array[i].isFile()) {
  36. fileTemp = array[i];
  37. fileName = fileTemp.getName();//取出文件名
  38. if (!fileName.equals("humbs.db")) {
  39. this.saveFile(fileTemp, 1);//分析每一个文件名字并存储
  40. System.out.println(fileName + " saved");
  41. }
  42. }
  43. }
  44. file = new File(saveLocal + "CSM");  //打开CSM
  45. array = file.listFiles();
  46. for(int i = 0; i < array.length; i++){
  47. if(array[i].isFile()) {
  48. fileTemp = array[i];
  49. fileName = fileTemp.getName();//取出文件名
  50. if (!fileName.equals("humbs.db")) {
  51. this.saveFile(fileTemp, 2);//分析每一个文件名字并存储
  52. System.out.println(fileName + " saved");
  53. }
  54. }
  55. }
  56. file = new File(saveLocal + "ZS");  //打开ZS
  57. array = file.listFiles();
  58. for(int i = 0; i < array.length; i++){
  59. if(array[i].isFile()) {
  60. fileTemp = array[i];
  61. fileName = fileTemp.getName();//取出文件名
  62. if (!fileName.equals("humbs.db")) {
  63. this.saveFile(fileTemp, 3);//分析每一个文件名字并存储
  64. System.out.println(fileName + " saved");
  65. }
  66. }
  67. }
  68. }
  69. /**
  70. * 开始执行
  71. * @throws IOException
  72. */
  73. public void execute() throws IOException{
  74. scan();//开始扫描
  75. }
  76. /**
  77. * 按类型存储
  78. * @param file
  79. * @param type
  80. * @throws IOException
  81. */
  82. private void saveFile(File file, int type) throws IOException {
  83. String fileName = file.getName();
  84. //类型A C 和 指数3种
  85. String year = fileName.substring(1, 5);//获得发布年份
  86. String date = fileName.substring(5, 9);//获得发布日期包含月日
  87. String var = null;//获得变量名字
  88. String dir = serverLocal;//存储目录名字
  89. if (type == 1 ) {
  90. var = fileName.substring(11, 15);
  91. dir = dir + "AGCM/" + var + "/" + year + "/" + date;
  92. } else if(type == 2) {
  93. var = fileName.substring(11, 15);
  94. dir = dir + "CSM/" + var + "/" + year + "/" + date;
  95. } else {
  96. var = fileName.substring(11, 15);//指数的暂时没处理
  97. dir = dir + "ZS/" + var + "/" + year + "/" + date;
  98. }
  99. //判断是否存在这样的目录没有就自动创建
  100. File savePath = new File(dir);
  101. if(!savePath.exists()) {
  102. savePath.mkdirs();
  103. }
  104. File saveFile = new File(dir + "/" + fileName);
  105. if(!saveFile.exists()){//如果不存在,就存文件
  106. FileInputStream fis = null;//这里用本地复制暂时代替FTP
  107. FileOutputStream fos =null;
  108. BufferedInputStream bis =null;
  109. BufferedOutputStream bos =null;
  110. int c;
  111. fis = new FileInputStream(file);
  112. bis = new BufferedInputStream(fis);
  113. fos = new FileOutputStream(dir + "/" + fileName);
  114. bos = new BufferedOutputStream(fos);
  115. while((c = bis.read())!= -1)
  116. bos.write(c);
  117. bos.flush();
  118. if(bos != null) bos.close();
  119. if(bis != null) bis.close();
  120. if(fos != null) fos.close();
  121. if(fis != null) fos.close();
  122. } else {
  123. System.out.println("文件已经存在,不进行存储,可清理当前文件.");
  124. }
  125. }
  126. /**
  127. * 测试方法
  128. * @param argv
  129. * @throws IOException
  130. */
  131. public static void main(String argv[])  {
  132. ScanFtp s = new ScanFtp();
  133. try {
  134. s.scan();
  135. } catch (IOException e) {
  136. // TODO Auto-generated catch block
  137. e.printStackTrace();
  138. }
  139. }
  140. }

自动扫描FTP文件工具类 ScanFtp.java的更多相关文章

  1. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

  2. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  3. Java 实现删除文件工具类

    工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...

  4. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...

  5. java文件工具类

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  6. java下载文件工具类

    java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  7. Property工具类,Properties文件工具类,PropertiesUtils工具类

    Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...

  8. Android FileUtil(android文件工具类)

    android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...

  9. HTTP 下载文件工具类

    ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...

随机推荐

  1. exit(-1)或者return(-1)为什么shell得到的退出码是255?

    写一段hello world: // filename: main.c #include <stdio.h> int main(void) { printf("hello wol ...

  2. Google Analytics SEO 实时 网站 访问量 统计

    /*************************************************************************** * Google Analytics SEO ...

  3. setTimeout方法

    //不建议传递字符串 setTimeout(alert("hello"),1000); //推荐调用方式 setTimeout(function(){alert("hel ...

  4. The u32 classifier

    The u32 classifier The U32 filter is the most advanced filter available in the current implementatio ...

  5. genome file format

    Some of the bedtools (e.g., genomeCoverageBed,complementBed, slopBed) need to know the size of the c ...

  6. html部分---样式表,选择器;

    <1.内联样式,优点:控制精确,缺点:代码重用性差,页面代码乱.> <div style="background-color:#0F0"></div& ...

  7. CentOS搭建Httpd Pyhton3 Django环境

    系统环境 centos-6-x86 系统自带httpd 编译安装Python3 pip3 参考 http://www.cnblogs.com/vawter/p/6254170.html 编译安装wsg ...

  8. LNMP环境搭建(discuz论坛)

    一.操作系统级环境及软件版本 操作系统:CentOS release 6.5 (Final)minimal 内核版本:2.6.32-431.el6.x86_64 MySQL版本:MySQL-5.6.2 ...

  9. Java基础相关

    对老师上课内容进行总结: 1.新建一个Java项目,并命名为HelloWorld 然后再新建类,并命名为HelloWorld,注意红色画圈部分 若勾选,则新建类开头为(“//后的内容为老师所讲批注”) ...

  10. 《苹果开发之Cocoa编程》键-值编码和键-值观察

    一.KVC 键-值编码(Key - Value Coding, KVC)是通过变量名的读取和设置变量值的一种方法,将字符串的变量名作为key来引用.NSObject定义了两个方法(KVC方法)用于变量 ...