0

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

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 行,如何实现这一点请告知

4

2 回答 2

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));
于 2012-06-28T14:51:55.843 回答
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。

于 2012-06-28T15:00:41.033 回答