Java 关于JFileChooser

Java 关于JFileChooser,java,swing,user-interface,java.util.scanner,jfilechooser,Java,Swing,User Interface,Java.util.scanner,Jfilechooser,我开发了一个程序,可以计算文件中的行数,如下所示 Scanner in=new Scanner(System.in); System.out.println("Enter the Drive name like C,D,E etc"); String drive=in.next(); System.out.println("Enter the main folder name"); String main_folder=in.next(); File di

我开发了一个程序,可以计算文件中的行数,如下所示

Scanner in=new Scanner(System.in);
    System.out.println("Enter the Drive name like C,D,E etc");
    String drive=in.next();
    System.out.println("Enter the main folder name");
    String main_folder=in.next();
    File directory=new File(drive+":"+"//"+main_folder+"//");

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);
            } }}        

    for( Map.Entry<String, Integer> entry:result.entrySet()){
          System.out.println(entry.getKey()+" ==> "+entry.getValue());
        }
但是它选择了我想要的单个文件,所有要在该文件夹中被选择的文件测试您可以使用以下代码(改编自):

另外,建议您在使用控制台和系统路径时,最好使用。这将自动为您提供相应系统的路径分隔字符

根据您的编辑,您使用的是
fileChooser.getSelectedFile()。这将仅获取用户根据其名称选择的文件。您应该使用
文件选择器.getSelectedFile().getAbsolutePath()
,并在同一目录中的文件上迭代(如上所示)

编辑2:我使用此代码显示2个按钮及其各自的事件处理程序:

public static void main(String args[]) {
        JFrame frame = new JFrame("Button Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton btnExit= new JButton("EXIT");    

        ActionListener actionListenerExitButton = new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent actionEvent) {
            System.out.println("Exit Button Was Clicked");
          }
        };
        btnExit.addActionListener(actionListenerExitButton);

        JButton btnEnter = new JButton("ENTER");
        ActionListener actionListenerEnterButton = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                System.out.println("Enter Button Was Clicked");
            }
        };
        btnEnter.addActionListener(actionListenerEnterButton);

        Container contentPane = frame.getContentPane();
        contentPane.add(btnExit, BorderLayout.SOUTH);
        contentPane.add(btnEnter, BorderLayout.NORTH);
        frame.setSize(300, 100);
        frame.setVisible(true);
      }

您现在需要做的就是插入我前面在适当的事件处理程序中提供的代码

@npinti..谢谢,它可以选择测试目录,但它不计算所有文件,它只计算其中的一个文件folder@user1464381:您是使用了我建议的代码还是更改了自己的代码?是的,我使用了与您建议的相同的代码,但它仍然只接收一个文件。请advise@user1464381:要更改起始目录,您只需更改以下行:
chooser.setCurrentDirectory(新java.io.File(“.”)类似于
chooser.setCurrentDirectory(新的java.io.File(“C:+File.separator”)
@user1464381:你需要做的是得到一个
JFrame
并显示你需要的
JButtons
。你应该可以在网上找到大量的教程。在Enter按钮的事件处理程序中,只需粘贴我提供的代码。它应该依次显示
JFileChooser
,并运行程序的其余部分。但是请注意,这将打印到控制台,而不是GUI。您可以使用
JTextArea
来显示内容。我会使用LineReader,而不是Scanner@mKorbel你能给我看看吗。。!
    JFileChooser chooser = new JFileChooser();
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle("choosertitle");
    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(choosers.getSelectedFile().getAbsolutePath()); //This is where you need to change.
        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());
        }
    }
Scanner in=new Scanner(System.in);
System.out.println("Enter the Drive name like C,D,E etc");
String drive=in.next();
System.out.println("Enter the main folder name");
String main_folder=in.next();
File directory=new File(drive+":"+"//"+main_folder+"//");
public static void main(String args[]) {
        JFrame frame = new JFrame("Button Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton btnExit= new JButton("EXIT");    

        ActionListener actionListenerExitButton = new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent actionEvent) {
            System.out.println("Exit Button Was Clicked");
          }
        };
        btnExit.addActionListener(actionListenerExitButton);

        JButton btnEnter = new JButton("ENTER");
        ActionListener actionListenerEnterButton = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                System.out.println("Enter Button Was Clicked");
            }
        };
        btnEnter.addActionListener(actionListenerEnterButton);

        Container contentPane = frame.getContentPane();
        contentPane.add(btnExit, BorderLayout.SOUTH);
        contentPane.add(btnEnter, BorderLayout.NORTH);
        frame.setSize(300, 100);
        frame.setVisible(true);
      }