Java 如何使用JFileChooser搜索文件夹中的所有文件

Java 如何使用JFileChooser搜索文件夹中的所有文件,java,jfilechooser,Java,Jfilechooser,我有一个程序(到目前为止)在一个文件中搜索某些关键字,并打印包含该关键字的所有行。问题是它一次只能搜索一个文本文件。如何使其搜索文件夹中的每个文本文件 这是“查找文件”按钮的代码,该按钮仅打开一个文本文件 findFileButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) {

我有一个程序(到目前为止)在一个文件中搜索某些关键字,并打印包含该关键字的所有行。问题是它一次只能搜索一个文本文件。如何使其搜索文件夹中的每个文本文件

这是“查找文件”按钮的代码,该按钮仅打开一个文本文件

        findFileButton.addActionListener(new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            JFileChooser fileChoice = new JFileChooser();
            fileChoice.setFileSelectionMode(JFileChooser.FILES_ONLY);

            int returnVal = fileChoice.showOpenDialog(AdminPanel.this);

            if (returnVal == JFileChooser.APPROVE_OPTION)
            {
                File file = fileChoice.getSelectedFile();
                wantedFile = file.getAbsolutePath();

            }
        }
    });
我尝试将fileSelectionMode切换到FILES_和_目录,但当我单击某个文件夹时,它会触发我的try/catch,因为找不到/指定了某个文件

有什么帮助吗? 谢谢
~Zmyth

首先,当使用
文件和目录时,您将获得一个文件或目录。您需要使用
File.isDirectory
检查类型,以确定应该执行的操作。如果它是一个目录,那么您需要列出其中的所有文件,并根据需要处理它们。如果它是一个文件,您只需要按照正常方式处理它

如果您只希望用户能够选择目录,则可以仅使用
目录

要搜索目录

你可以。。。 使用以下方法之一列出选定目录中的所有文件

这将只列出当前目录的文件,如果您想进行递归搜索,您需要自己实现,但这并不难

你可以。。。 根据您对
FileVisitor


有关更多详细信息,请参见

如果我的原始问题不清楚,很抱歉,我不确定如何在文件夹中搜索文件,而不仅仅是一个文件。不过,在一个答案的帮助下,我最终还是得到了答案。我会投赞成票,但我还没有足够的声誉。这就是我想要的:

findFileButton.addActionListener(new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            JFileChooser fileChoice = new JFileChooser();
            fileChoice.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

            int returnVal = fileChoice.showOpenDialog(Panel.this);

            if (returnVal == JFileChooser.APPROVE_OPTION)
            {
                File folder = fileChoice.getCurrentDirectory();
                File[] listOfFiles = folder.listFiles();

                for (int i = 0; i < listOfFiles.length; i++)
                {
                    if (listOfFiles[i].isFile())
                    {
                        wantedFilesList.add(listOfFiles[i].getAbsolutePath());
                        currentFilesList.add(listOfFiles[i].getName());
                    }
                    else if (listOfFiles[i].isDirectory())
                    {
                        // Blerg
                    }
                }

            }
        }
    });
findFileButton.addActionListener(新ActionListener()
{
@凌驾
已执行的公共无效操作(操作事件e)
{
JFileChooser fileChoice=新的JFileChooser();
fileChoice.setFileSelectionMode(仅限JFileChooser.DIRECTORIES_);
int returnVal=fileChoice.showOpenDialog(Panel.this);
if(returnVal==JFileChooser.APPROVE_选项)
{
File folder=fileChoice.getCurrentDirectory();
File[]listOfFiles=folder.listFiles();
for(int i=0;i
您已经知道如何使用JFileChooser选择目录,因此该部分是不相关的。你知道如何读取单个文件。我认为你真正想问的只是“我怎样才能找到目录中的所有文件?”对吗?