到目前为止,我有这样的代码:
import java.io.File;
import java.util.Scanner;
public class Test {
static Scanner input = new Scanner(System.in);
public static void fileListing(File[] files, int depth) {
if(depth == 0)
return;
else {
for(File file: files) {
if(file.isDirectory())
fileListing(file.listFiles(), depth-1);
else {
String ext;
String fileName = file.getName();
if(fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0)
ext = fileName.substring(fileName.lastIndexOf(".")+1);
else
return;
System.out.println(ext);
}
}
}
}
public static void main(String [] args) {
System.out.printf("Path: ");
String path = input.nextLine();
if(new File(path).isDirectory()) {
System.out.printf("Depth: ");
int depth = input.nextInt();
File[] file = new File(path).listFiles();
fileListing(file, depth);
}
else {
System.out.printf("The path %s isn't valid.", path);
System.exit(0);
}
}
}
我的输出列出了某个目录中的文件扩展名,例如。克。
txt
txt
doc
如何改进此代码以使用计数器显示文件扩展名?例如上面的例子,输出应该是这样的:
2 txt
1 doc
最佳答案
您可以使用 map :代码为:
Map<String,Integer> countExt = new HashMap<String,Integer>();
// Start from here inside your if statement
ext = fileName.substring(fileName.lastIndexOf(".")+1);
// If object already exists
if(countExt.containsKey(ext)){
Integer count = countExt.get(ext);
count++;
//Remove old object and add new
countExt.remove(ext));
countExt.put(ext,count);
}
// If extension is new
else
countExt.put(ext,1);
//For Display
Set<String> keySet = countExt.keys();
for(String key : keySet){
System.out.println(key +" : "+countExt.get(key));
}
关于java - 按扩展名列出和计数文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111318/