获取指定路径下所有文件地址:
public List<String> getPaths(String filepath) {
//System.out.println(filepath);
File file = new File(filepath);
File[] tempList;
List<String> list = new ArrayList<String>();
//判断地址是否为文件夹
if (file.isDirectory()) {
//拿到该地址下所有文件路径
tempList = file.listFiles();
//输出数组
//System.out.println(Arrays.toString(tempList));
list = new ArrayList<String>();
for (int i = 0; i < tempList.length; i++) {
//判断是否为文件
if (tempList[i].isFile()) {
//System.out.println(tempList[i].getAbsolutePath());
//拿到指定数组中的路径,并加入到集合中
list.add(tempList[i].getAbsolutePath());
}
if (tempList[i].isDirectory()) {
//如果是文件夹调用本方法,并将list内容加入到list集合中
//System.out.println(getPaths(tempList[i].getAbsolutePath()));
list.addAll(getPaths(tempList[i].getAbsolutePath()));
}
}
} else if (file.isFile()) {
String s = file.getAbsolutePath();
list.add(s);
}
return list;
}
输出文件夹名及其下文件数量:
public static void main(String[] args) {
Map<String, Integer> pathsNumber = getPathsNumber("自己的路径");
int values=0;
/*//遍历所有values
for (int value:pathsNumber.values()){
values+=value;
}*/
for (String key:pathsNumber.keySet()){
Integer value = pathsNumber.get(key);
System.out.println(key+"="+value);
values+=value;
}
System.out.println("总和为:"+values);
}
public static Map<String, Integer> getPathsNumber(String path) {
Map<String, Integer> map = new HashMap<>();
File files = new File(path);
//拿到指定路径下所有的文件对象
File[] tempList = files.listFiles();
//记录文件数量
int filerCount = 0;
//String filerName="";
//拿到文件名
String filerName = files.getName();
//System.out.println(filerName);
//System.out.println(Arrays.toString(tempList));
for (File file : tempList) {
//判断是否为文件夹
if (file.isDirectory()) {
//文件夹再次调用本方法
map.putAll(getPathsNumber(file.getAbsolutePath()));
} else {
filerCount++;
}
}
map.put(filerName, filerCount);
return map;
}