读取资源目录文件详解程序员

项目中很普遍使用maven进行项目的构建,但是使用maven时,由于网络不稳定,或者需要FQ等因素,导致部分jar可能下载失败,只能重新下载才能使项目正常启动。
如何快速找到那个依赖报错了呢?不多唠叨了,见下文解决方案:
 
 1 package cn.yunhwa.power.webservice; 
 2  
 3 import java.io.*; 
 4 import java.util.*; 
 5  
 6 import org.slf4j.Logger; 
 7 import org.slf4j.LoggerFactory; 
 8  
 9 /** 
10  *  
11  * @Title: TestIo 
12  * @Description: 通过读取指定的目录及子目录下指定文件名的路径,获取需要的资源,返回结果为List 
13  * @author: lijunwei 
14  * @date 2018年5月8日 下午9:29:35 
15  */ 
16 public class TestIo { 
17  
18     private static Logger logger = LoggerFactory.getLogger(TestIo.class); 
19  
20     /** 
21      *  
22      * @Title: getListFiles   
23      * @Description: 通过制定路径,后缀,以及是否循环遍历子目录来获取目录下的资源文件 
24      * @author: lijunwei 
25      * @date 2018年5月8日 下午8:33:31 
26      * @param path 文件路径 
27      * @param suffix 后缀名, 为空则表示所有文件 
28      * @param flag 是否遍历子目录 
29      * @return List<String>  
30      * @version   
31      * @since  
32      * @throws 
33      */ 
34     public static List<String> getFilesList(String path, String suffix, boolean flag) { 
35         List<String> lstFileNames = new ArrayList<String>(); 
36         File file = new File(path); 
37         return TestIo.listFile(lstFileNames, file, suffix, flag); 
38     } 
39  
40     // aether-ed239b5e-5ab7-49c1-8f71-df76605fb76e-spring-beans-5.0.5.RELEASE.jar.sha1-in-progress 
41     // 以in-progress为结尾的为下载失败的依赖,常见的下载依赖失败的后缀,.sha1-in-progress/.jar-in-progress/.pom-in-progress 
42     private static List<String> listFile(List<String> lstFileNames, File f, String suffix, boolean flag) { 
43         // 若是目录, 采用递归的方法遍历子目录 
44         if (f.isDirectory()) { 
45             File[] t = f.listFiles(); 
46  
47             for (int i = 0; i < t.length; i++) { 
48                 if (flag || t[i].isFile()) { 
49                     listFile(lstFileNames, t[i], suffix, flag); 
50                 } 
51             } 
52         } else { 
53             String filePath = f.getAbsolutePath(); 
54             if (!suffix.equals("")) { 
55                 int begIndex = filePath.lastIndexOf("."); // 最后一个.(即后缀名前面的.)的索引 
56                 String tempsuffix = ""; 
57  
58                 if (begIndex != -1) {// 这里可以筛选指定后缀的文件 
59                     tempsuffix = filePath.substring(begIndex + 1, filePath.length()); 
60                     // sha1-in-progress包含in-progress 
61                     // 这里因为指定的后缀与截取.的后缀,名字不一致,所以加一个|| tempsuffix.contains(suffix)条件 
62                     if (tempsuffix.equals(suffix) || tempsuffix.contains(suffix)) { 
63                         lstFileNames.add(filePath); 
64                     } 
65                 } 
66             } else { 
67                 lstFileNames.add(filePath); 
68             } 
69         } 
70         return lstFileNames; 
71     } 
72  
73     public static void main(String[] args) { 
74         List<String> list = getFilesList("G://repository", "in-progress", true); 
75         logger.debug("依赖下载失败的个数:{}",list.size()); 
76         logger.info("依赖下载失败的依赖目录:{}",list); 
77     } 
78 }

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/6576.html

(0)
上一篇 2021年7月16日 23:33
下一篇 2021年7月16日 23:33

相关推荐

发表回复

登录后才能评论