读取资源目录文件

  项目中很普遍使用maven进行项目的构建,但是使用maven时,由于网络不稳定,或者需要FQ等因素,导致部分jar可能下载失败,只能重新下载才能使项目正常启动。

如何快速找到那个依赖报错了呢?不多唠叨了,见下文解决方案

package cn.yunhwa.power.webservice;

import java.io.*;
import java.util.*;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
*
* @Title: TestIo
* @Description: 通过读取指定的目录及子目录下指定文件名的路径,获取需要的资源,返回结果为List
* @author: lijunwei
* @date 2018年5月8日 下午9:29:35
*/
public class TestIo {

private static Logger logger = LoggerFactory.getLogger(TestIo.class);

/**
*
* @Title: getListFiles
* @Description: 通过制定路径,后缀,以及是否循环遍历子目录来获取目录下的资源文件
* @author: lijunwei
* @date 2018年5月8日 下午8:33:31
* @param path 文件路径
* @param suffix 后缀名, 为空则表示所有文件
* @param flag 是否遍历子目录
* @return List<String>
* @version
* @since
* @throws
*/
public static List<String> getFilesList(String path, String suffix, boolean flag) {
List<String> lstFileNames = new ArrayList<String>();
File file = new File(path);
return TestIo.listFile(lstFileNames, file, suffix, flag);
}

// aether-ed239b5e-5ab7-49c1-8f71-df76605fb76e-spring-beans-5.0.5.RELEASE.jar.sha1-in-progress
// 以in-progress为结尾的为下载失败的依赖,常见的下载依赖失败的后缀,.sha1-in-progress/.jar-in-progress/.pom-in-progress
private static List<String> listFile(List<String> lstFileNames, File f, String suffix, boolean flag) {
// 若是目录, 采用递归的方法遍历子目录
if (f.isDirectory()) {
File[] t = f.listFiles();

for (int i = 0; i < t.length; i++) {
if (flag || t[i].isFile()) {
listFile(lstFileNames, t[i], suffix, flag);
}
}
} else {
String filePath = f.getAbsolutePath();
if (!suffix.equals("")) {
int begIndex = filePath.lastIndexOf("."); // 最后一个.(即后缀名前面的.)的索引
String tempsuffix = "";

if (begIndex != -1) {// 这里可以筛选指定后缀的文件
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
// sha1-in-progress包含in-progress
// 这里因为指定的后缀与截取.的后缀,名字不一致,所以加一个|| tempsuffix.contains(suffix)条件
if (tempsuffix.equals(suffix) || tempsuffix.contains(suffix)) {
lstFileNames.add(filePath);
}
}
} else {
lstFileNames.add(filePath);
}
}
return lstFileNames;
}

public static void main(String[] args) {
List<String> list = getFilesList("G:\\repository", "in-progress", true);
logger.debug("依赖下载失败的个数:{}",list.size());
logger.info("依赖下载失败的依赖目录:{}",list);
}
}

猜你喜欢

转载自www.cnblogs.com/summary-2017/p/9009201.html