Может кто-нибудь помочь мне с исправлением моей проблемы. У меня есть функция, которая проверяет, присутствует ли файл в определенном пути. функция проверяет, совпадают ли имена файлов, а также пути. (Файл с определенным именем может присутствовать в нескольких местах). Ниже вы найдете мой код.Оператор возврата не работает
memberPath - статическая переменная, которая содержит относительный путь. file_Path - статическая переменная, которая обновляется, когда совпадение найдено.
Моя проблема заключается в том, что функция находит совпадение, но она вырывается из цикла for, возвращается для возврата, но возвращается в цикл for. Может ли кто-нибудь помочь мне исправить мой код, чтобы после того, как совпадение найдено, он возвращает bac в вызывающую позицию.
public static String traverse(String path, String filename) {
String filePath = null;
File root = new File(path);
File[] list = root.listFiles();
for (File f : list) {
if (f.isDirectory()) {
traverse(f.getAbsolutePath(), filename);
} else if (f.getName().equalsIgnoreCase(filename) && f.getAbsolutePath().endsWith(memberPath)) {
filePath = f.getAbsolutePath();
file_Path = filePath;
break ;
}
}
return filePath;
}
Вот как проходит рекурсия. Чего вы ожидали? –
Почему бы и нет, вместо того, чтобы нарушать, немедленно вернуться? –
@RohitJain: но можете ли вы сказать мне, что я должен добавить, чтобы он вернулся к вызывающей позиции – user1688404