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. bzoj4034 (树链剖分+线段树)

    Problem T2 (bzoj4034 HAOI2015) 题目大意 给定一颗树,1为根节点,要求支持三种操作. 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子 ...

  2. CODEVS3123 a*b problem plus (FFT)

    type xh=record x,y:double; end; arr=..] of xh; var n,m:longint; s1,s2:ansistring; a,b,g,w:arr; ch:ch ...

  3. WPF Step By Step 系列 - 开篇 ·

    WPF Step By Step 系列 - 开篇 公司最近要去我去整理出一个完整的WPF培训的教程,我刚好将自己学习WPF的过程和经验总结整理成笔记的方式来讲述,这里就不按照书上面的东西来说了,书本上 ...

  4. 即使连网了ping也会失败

    /*************************************************************************** * 即使连网了ping也会失败 * 说明: * ...

  5. LeetCode Kth Smallest Element in a BST(数据结构)

    题意: 寻找一棵BST中的第k小的数. 思路: 递归比较方便. /** * Definition for a binary tree node. * struct TreeNode { * int v ...

  6. Dubbo_Admin安装

    1.下载dubbo 我上传地址:http://download.csdn.net/detail/liweifengwf/7784901 官方地址:http://code.alibabatech.com ...

  7. win7 64 下安装ubuntu14.04

    win7下安装ubuntu方法: * 使用win7下的自带的分区工具给ubuntu留出磁盘空间:计算机 -> 右键菜单选择管理 -> 选择磁盘管理->选中最后的那个磁盘->右键 ...

  8. 用python做爬虫的例子

    主要就是用了两个库,urllib和BeautifulSoup. 作用是从HTML中解析出解梦的查询词和具体的解释. # -*- coding: utf-8 -*- import urllib, url ...

  9. leetcode 148. Sort List ----- java

    Sort a linked list in O(n log n) time using constant space complexity. 排序,要求是O(nlog(n))的时间复杂度和常数的空间复 ...

  10. leetcode 140. Word Break II ----- java

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...