大家早上好,
我在这里遇到了一个我正在努力工作的代码。此代码的目标是生成递归算法以查找与目标文件名匹配的所有文件。每个字符串都应将路径名存储到匹配文件中。如果找不到匹配的文件,则返回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);
}
}
}
}
如果我错过了一些非常明显的东西,我对编程很新,并提前道歉。提前谢谢你,祝你有个美好的一天!
答案 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}}