从文件夹读取java文件(Reading the java files from the folde

2019-07-30 04:21发布

我已经开发出从用户选择的文件夹中读取文件的应用程序。 它显示多行代码是如何在每个文件。 我想在文件选择要显示的(具有.java扩展名的文件)只有Java文件。 下面是我的代码:

 public static void main(String[] args) throws FileNotFoundException {

        JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new java.io.File("C:" + File.separator));
        chooser.setDialogTitle("FILES ALONG WITH LINE NUMBERS");
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser.setAcceptAllFileFilterUsed(false);
                if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
        {      Map<String, Integer> result = new HashMap<String, Integer>();
             File directory = new File(chooser.getSelectedFile().getAbsolutePath()); 
             int totalLineCount = 0;
             File[] files = directory.listFiles(new FilenameFilter(){
                  @Override
                  public boolean accept(File dir, String name) {
                    return name.matches("\\*\\.java");
                  }
                }
   );
              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("*****************************************");
              System.out.println("FILE NAME FOLLOWED BY LOC");
              System.out.println("*****************************************");

            for (Map.Entry<String, Integer> entry : result.entrySet())
            {   System.out.println(entry.getKey() + " ==> " + entry.getValue());
            }
            System.out.println("*****************************************");
            System.out.println("SUM OF FILES SCANNED ==>"+"\t"+result.size()); 
            System.out.println("SUM OF ALL THE LINES ==>"+"\t"+ totalLineCount);

             }  

我也editied但仍不能正常工作,请告知,请告知如何只读具有的.java作为换句话说延长从文件夹中只有java文件中的文件,请指教

Answer 1:

你需要的FilenameFilter。 这应该为你工作:

FilenameFilter javaFileFilter= new FilenameFilter() {  
  @Override
  public boolean accept(File logDir, String name) {
    return name.endsWith(".java")
  }
};


Answer 2:

你应该看看在筛选文件列表中的JFileChooser。

它的一个例子ImageFilter.java这表明在文件选择器只图像文件。



文章来源: Reading the java files from the folder