gpt4 book ai didi

java - 如何使用静态方法搜索文件目录并返回对象?

转载 作者:行者123 更新时间:2023-12-02 06:46:32 27 4
gpt4 key购买 nike

我正在尝试学习如何编写实用程序类,但我不确定我正在尝试做的事情是否适合实用程序类。我对 java 还很陌生,并试图从概念上理解如何以及何时做某些事情。

我有一个只有静态方法的类。我认为每当我的 search() 方法被递归调用时,它最初拥有的数据就会丢失。我的类(class)设置如下:

public class MyClassUtil {

public static List<MyObjectData> findStuff(File path, List<String> listOfMyStuff) {
String listAsString = convertListToString(listOfMyStuff);
Pattern pattern = Pattern.compile(listAsString);

List<MyObjectData> myObjectData = search(path, pattern);

return myObjectData;
}

private static final String convertListToString(List<String> list) {

// This method converts a given list to a string. It works fine!
}

private static final List<MyObjectData> search(File directory, Pattern p) {

List<MyObjectData> dataInFile = new ArrayList<MyStringData>();

for (File file : directory.listFiles()) {
if (file.isFile()) {
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;

while ((line = br.readLine()) != null) {
try {
Matcher m = p.matcher(line);
boolean found = m.find();

if (found) {
dataInFile.add(new MyObjectData(m.group(2), true));
}
} catch (Exception E) {
e.printStackTrace();
}
}
br.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
if (file.isDirectory()) {
search(file, p);
}
return dataInFile;
}
}
}

我没有得到任何返回(尽管我知道应该退还一些东西)。

最佳答案

问题是您没有添加递归调用的结果。

更改:

     if(file.isDirectory()) { search(file, p); }

     if(file.isDirectory()) { dataInFile.addAll(search(file, p)); }

关于java - 如何使用静态方法搜索文件目录并返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com