0

我通过在测试文件夹中保留 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

那是新行中的每个文件本身,请告知需要为此进行哪些必要的更改。

4

5 回答 5

1

替换System.out.println(result);

for(String e : result.keySet())
    System.out.println(e+"="+result(e)+"\n")

您得到的是 HashMap 的默认 toString。

于 2012-06-27T17:36:13.427 回答
0
for (Map.Entry<String, Integer> entry : result.entrySet()) {
    String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key+"="+value+",");
}
于 2012-06-27T17:37:31.263 回答
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);
于 2012-06-27T17:43:28.530 回答
0

尝试这个....

for( Map.Entry<String, Integer> m : result.entrySet())

{

  System.out.println(m.getKey()+" = "+m.getValue());

}
于 2012-06-27T17:43:34.110 回答
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");
       }


            }}
于 2012-06-27T17:59:40.017 回答