一种代码,用于在特定目录中查找文件名并存储在数组列表中

时间:2017-07-16 11:40:05

标签: java arraylist

大家早上好,

我在这里遇到了一个我正在努力工作的代码。此代码的目标是生成递归算法以查找与目标文件名匹配的所有文件。每个字符串都应将路径名存储到匹配文件中。如果找不到匹配的文件,则返回null。以下是我到目前为止的情况:

import java.io.File;
import java.util.ArrayList;

public class ArrayListFiles 
{
    public static ArrayList searchForFile
    (File dir, ArrayList filePaths, String target)
    {
        if (!dir.isDirectory())
            return null;
        else 
        {
            File[] files=dir.listFiles();
            for (int index = 0; index < filePaths; index++)
            {
                if(files[index].isFile())
                {
                    if(files[index].getName().equals(target))
                    {
                        filePaths.add(files[index].toString());
                    }
                }
            else if(files[index].isDirectory())
                searchForFile(files[index], filePaths, target);
            }
        }
    return filePaths;
    }
    public static void main(String[] args)
    {
        ArrayList filePaths = new ArrayList();
        File rootFolder = new File("F:\\java");
        String targetFile = "sample.txt";
        filePaths = searchForFile(rootFolder, filePaths, targetFile);
        if(filePaths==null)
            System.out.println("No file is found");
        else
        {
            for (String string : filePaths)
            {
                System.out.println(string);
            }
        }

    }
}

如果我错过了一些非常明显的东西,我对编程很新,并提前道歉。提前谢谢你,祝你有个美好的一天!

2 个答案:

答案 0 :(得分:1)

解决此错误"Type mismatch: cannot convert from element type Object to String" for "for (String string : filePaths).&#34;将您的代码更改为:

ArrayList<String> filePaths = new ArrayList<String>();
        File rootFolder = new File("F:\\java");
        String targetFile = "sample.txt";
        filePaths = searchForFile(rootFolder, filePaths, targetFile);
        if(filePaths==null)
            System.out.println("No file is found");
        else
        {
            for (String string : filePaths)
            {
                System.out.println(string);
            }
        }

FilePaths是一个arraylist,它应该如下:

 for (int index = 0; index < files.length; index++)

希望这会有所帮助。

答案 1 :(得分:0)

这可能是你的问题:

int index = 0; index < files.length; index++

FilePaths是一个arraylist,你将它用作整数。 您可能想要遍历文件?尝试

{{1}}