显示从Map读取的总行数

时间:2012-06-28 14:47:13

标签: java

我有一个应用程序,用户在其中选择特定文件夹,并计算该文件夹中的所有文件以及这些单个文件中的代码行,并在控制台中记录文件名和代码行。显示..这是我的代码......

Map<String, Integer> result = new HashMap<String, Integer>();  
                File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
                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);  
                        }  
                    }  
                }  
                for (Map.Entry<String, Integer> entry : result.entrySet())  
                {   System.out.println(entry.getKey() + " ==> " + entry.getValue());  
                }  }  

但是我想添加一个更多的功能它还应该显示所有文件的总行数让我们假设那6个单独的文件有10行代码,然后每行有10 * 6即60总行读取,如何实现这一点请指教

2 个答案:

答案 0 :(得分:1)

为什么不为每个Map条目值添加一个计数器并将其添加到您的计数器/累加器并在之后打印出来:

                Map<String, Integer> result = new HashMap<String, Integer>();  
                File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
                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);  
                        }  

                    }  
                }  

                int lineCounter = 0;  
                for (Map.Entry<String, Integer> entry : result.entrySet())  
                {  
                    System.out.println(entry.getKey() + " ==> " + entry.getValue());
                    lineCounter+=entry.getValue();  
                }  
                 System.out.println(String.valueOf(lineCounter));

答案 1 :(得分:0)

要显示您正在阅读的所有文件的总行数,您需要将每个文件的行总结为另一个变量。

Map<String, Integer> result = new HashMap<String, Integer>();  
            File directory = new File(chooser.getSelectedFile().getAbsolutePath());   
            File[] files = directory.listFiles();
            int totalLineCount = 0;
            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);
                        totalLineCount += lineCount;   
                    }  
                }  
            }
             System.out.println("Total line count = "+ totalLineCount);

            for (Map.Entry<String, Integer> entry : result.entrySet())  
            {   System.out.println(entry.getKey() + " ==> " + entry.getValue());  
            }  } 

因此,如果您有10个文件,每个文件有6行,则totalLineCount应为60.