java找出文件夹下的所有文件夹 123_Java扫描指定文件路径下的文件并且递归扫描其子目录下的所有文件...

这是一个Java实现的文件扫描服务,用于查找指定目录及其子目录下的文件。服务首先从配置文件中获取接口目录,然后遍历目录,对遇到的.dat、.avl和.chk文件进行处理,包括记录文件信息到数据库。对于.chk文件,还会进行内容解析。如果遇到的是目录,服务会递归进入继续查找。
摘要由CSDN通过智能技术生成

1 packagecom.src.service.impl;2

3 importjava.io.File;4 importjava.net.InetAddress;5 importjava.net.NetworkInterface;6 importjava.net.SocketException;7 importjava.net.UnknownHostException;8 importjava.text.SimpleDateFormat;9 importjava.util.ArrayList;10 importjava.util.List;11 importjava.util.Date;12 importjava.util.Enumeration;13 importjava.util.LinkedHashMap;14 importjava.util.Map;15 importjava.util.Set;16

17 importorg.slf4j.Logger;18 importorg.slf4j.LoggerFactory;19

20 importcom.src.dao.ChkFileDao;21 importcom.src.dao.FileDao;22 importcom.src.dao.impl.ChkFileDaoImpl;23 importcom.src.dao.impl.FileDaoImpl;24 importcom.src.factory.ChkFileParseFactroy;25 importcom.src.service.FoundFileService;26 importcom.src.util.Config;27 importcom.src.util.UUIDUtil;28

29 /**

30 * @ClassName: FoundFileServiceImpl31 * @Description: 扫描文件32 * @date Aug 24, 2014 1:26:18 AM33 */

34 public class FoundFileServiceImpl implementsFoundFileService {35

36 private static Logger logger = LoggerFactory.getLogger(FoundFileServiceImpl.class);37 private staticString interDir;38

39 /**

40 * @Title: foundFile41 * @Description: 获取接口文件目录42 * @最后修改时间:Aug 24, 2014 1:26:50 AM43 */

44 public voidfoundFile() {45 interDir =Config.getInstance().interDir;46 if (!isExist(interDir)) {47 logger.info("The file path " + interDir + " does not exists.");48 } else{49 logger.info("The current scanning directory: " +interDir);50 foundFile(interDir);51 }52 }53

54 /**

55 * @Title: foundFile56 * @Description: 获取接口文件目录下的文件列表57 * @最后修改时间:Aug 24, 2014 1:27:40 AM58 *@paramrootStr59 */

60 public voidfoundFile(String rootStr) {61

62 String host = Config.getInstance().host; //获取配置文件中的IP地址

63

64 File root = newFile(rootStr);65 File[] file =root.listFiles();66 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");67

68 FileDao fileDao = newFileDaoImpl();69 ChkFileDao chkFileDao = newChkFileDaoImpl();70

71 /**接口文件变量*/

72 String id = null; //UUID

73 String interNo = null; //接口号

74 String opTime; //数据日期

75 String interFileName; //源接口文件名

76 String sourceDir = null; //源接口文件路径

77 String fileSize; //源接口文件大小

78 String updateTime; //源接口文件最后修改时间

79 int status = 6; //接口文件FTP状态

80 String loadStatus = ""; //接口文件Load状态

81

82 /**CHK文件变量*/

83 String totalNum; //接口记录总数

84 String chkFileSize; //接口文件总大小

85 int chkFileNum = 0; //接口文件个数

86 String ftpStatus = ""; //FTP状态

87

88 for(File f : file) {89 interFileName = f.getName(); //获取文件名

90 logger.info("The current scan the file: " +interFileName);91

92 id = UUIDUtil.getUUID(); //获取ID, Unique

93 sourceDir = f.getAbsolutePath().toString().replace("\\", "/");94

95 if (interFileName.endsWith(".dat") || interFileName.endsWith(".DAT")) {96 updateTime = sdf.format(new Date(f.lastModified())); //获取接口文件最后修改时间

97 String interID = interFileName.substring(11, 15); //获取6位接口号

98 List> list =fileDao.getInterNoByID(interID);99

100 for (Mapmap : list) {101 interNo = map.get("FULLINTERCODE");102 }103

104 if ("M".equalsIgnoreCase(interNo.substring(0, 1))) {105 opTime = interFileName.substring(0, 6);106 } else{107 opTime = interFileName.substring(0, 8);108 }109

110 if (-1 !=fileDao.insert(id, interFileName,updateTime, interNo, opTime, sourceDir, host,loadStatus, status)) {111 logger.info(" The inter file " + interFileName + " successfully logged into the database.");112 } else{113 logger.info(" The inter file " + interFileName + " already exists in the database.");114 }115

116 }117

118 if(f.isFile()) {119

120 if (interFileName.endsWith(".avl") || interFileName.endsWith(".AVL")) {121 fileSize = Long.toString(f.length()); //获取文件大小

122 updateTime = sdf.format(new Date(f.lastModified())); //获取接口文件最后修改时间

123 interNo = interFileName.substring(0, 6); //获取6位接口号

124 opTime = getOpTime(interFileName); //获取操作时间

125

126 if (-1 !=fileDao.insert(id, interFileName, updateTime, interNo, opTime, sourceDir, fileSize, host, loadStatus, status)) {127 logger.info(" The inter file " + interFileName + " successfully logged into the database.");128 } else{129 logger.info(" The inter file " + interFileName + " already exists in the database.");130 }131

132 } else if (interFileName.endsWith(".chk") || interFileName.endsWith(".CHK")) {133 ChkFileParseFactroy chkFileParse = newChkFileParseFactroy();134 Map chkFileMap = new LinkedHashMap();135 chkFileMap =chkFileParse.fileParsing(f);136

137 opTime = getOpTime(interFileName); //获取操作时间

138 updateTime = sdf.format(new Date()); //获取更新时间:系统当前时间

139 interNo = interFileName.substring(0, 6);140 chkFileNum = Integer.valueOf(chkFileMap.get("fileNum"));141 totalNum = chkFileMap.get("totalNum");142 chkFileSize = chkFileMap.get("fileSize");143

144 /**

145 * 根据interNo和opTime字段判断表中是否存在该记录146 */

147 if (!chkFileDao.query(interNo, opTime)) {148 chkFileDao.insert(id, interNo, opTime, chkFileNum, totalNum, chkFileSize, sourceDir, updateTime, ftpStatus, loadStatus);149 logger.info(" The CHK file " + interFileName + " successfully logged into the database.");150 } else{151 logger.info(" The CHK file " + interFileName + " already exists in the database.");152 }153

154 } else{155 logger.info("The file " + interFileName + " is illegal, pass it.");156 }157 } else if(f.isDirectory()) {158 foundFile(f.toString());159 }160

161 }162 }163

164 /**

165 * @Title: isExist166 * @Description: 判断文件目录是否存在167 * @最后修改时间:Aug 28, 2014 10:54:13 AM168 *@paramfilePath169 *@returnboolean 返回类型170 */

171 public static booleanisExist(String filePath) {172 boolean exists = true;173 File file = newFile(filePath);174 if (!file.exists()) {175 exists = false;176 }177 returnexists;178 }179

180 /**

181 *182 * @Title: unifiedSeparator183 * @Description: 获取文件路径,统一格式全部都以分隔符结束184 * @最后修改时间:Aug 31, 2014 12:59:54 AM185 *@paraminterDirectory186 *@returnString 返回类型187 */

188 public staticString unifiedSeparator(String interDirectory) {189 String separator = "/";190

191 if(interDirectory.endsWith(separator)) {192 returninterDirectory;193 } else{194 return interDirectory +separator;195 }196 }197

198 /**

199 * @Title: getOpTime200 * @Description: 判断是日接口还是月接口,并获取相应的日期;201 * 月接口:例M24289201408231155 非月接口:A/I/P,I0606920140820230045202 * @最后修改时间:Aug 31, 2014 1:00:16 AM203 *@paraminterDirectory204 *@returnString 返回类型205 */

206 public staticString getOpTime(String interDirectory) {207 String opTimeString = null;208 try{209 if ("M".equalsIgnoreCase(interDirectory.substring(0, 1))) {210 opTimeString = interDirectory.substring(6, 12);211 } else{212 opTimeString = interDirectory.substring(6, 14);213 }214 } catch(Exception e) {215 logger.info("Failure to obtain the operating time: "

216 +e.getMessage());217 }218 returnopTimeString;219 }220

221 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值