我通过在测试文件夹中保留3个不同的文件
来实现如下所示的想法public class FileCountLine {
public static void main(String[] args) throws FileNotFoundException {
Map<String, Integer> result = new HashMap<String, Integer>();
File directory = new File("C:/Test/");
File[] files = directory.listFiles();
for (File file : files) {
if (file.isFile()) {
Scanner scanner = new Scanner(new FileReader(file));
int lineCount = 0;
try {
for (lineCount = 0; scanner.nextLine() != null; lineCount++);
} catch (NoSuchElementException e) {
result.put(file.getName(), lineCount);
}
}}
System.out.println(result);
}}
但作为输出的结果,我得到的文件正在计算其中的代码行数,这些文件全部都在一行中,如下所示。
{ValidateWagRewardsRedemptionOptionPPI.java=73, IWalgreensRewardsPosLogSupport.java=134, WagEnrollmentInfoLine.java=111}
请告知我希望结果的格式为输出,如下所示
WalgreensRewardsPosLogSupport.java=134,
WagEnrollmentInfoLine.java=111,
ValidateRewardsAARPManualEntryPPI.java=67
这是新行中的每个文件,请告知需要进行哪些必要的更改。
答案 0 :(得分:1)
将System.out.println(result);
替换为
for(String e : result.keySet())
System.out.println(e+"="+result(e)+"\n")
你得到的是HashMap的默认toString。
答案 1 :(得分:0)
for (Map.Entry<String, Integer> entry : result.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+"="+value+",");
}
答案 2 :(得分:0)
你不能像这样打印HashMap
System.out.println(result);
使用此
for( Map.Entry<String, Integer> entry:result.entrySet()){
System.out.println(entry.getKey()+" = "+entry.getValue());
}
而不是
System.out.println(result);
答案 3 :(得分:0)
试试这个......
for( Map.Entry<String, Integer> m : result.entrySet())
{
System.out.println(m.getKey()+" = "+m.getValue());
}
答案 4 :(得分:0)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
class FileCountLine {
public static void main(String[] args) throws FileNotFoundException {
Map<String, Integer> result = new HashMap<String, Integer>();
File directory = new File("/home/joker/Projects/eclipse");
File[] files = directory.listFiles();
for (File file : files) {
if (file.isFile()) {
Scanner scanner = new Scanner(new FileReader(file));
int lineCount = 0;
try {
for (lineCount = 0; scanner.nextLine() != null; lineCount++);
} catch (Exception e) {
result.put(file.getName(), lineCount);
}
}}
Set set = result.entrySet() ;
Iterator itr = set.iterator();
while(itr.hasNext())
{
System.out.println(itr.next()+"\n");
}
}}