Выдает корректный результат
ругается:
Нужно реализовать метод getFileTree: найти все файлы по указанному пути и добавить их в список.
Иправил: Метод getFileTree должен быть вызван только 1 раз (рекурсию не использовать).
package com.javarush.task.task31.task3102;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/*
Находим все файлы
*/
public class Solution {
public final static String C_ILION_1 = "C:\\ILION\\1";
public static List<String> getFileTree(String root) {
ArrayList<String> rezult = new ArrayList<>();
if ((new File(root)).isDirectory()) {
rezult.addAll(findAllFilesInAllSubdirectories(root));
} else if ((new File(root)).isFile()) {
rezult.add(
(new File(root)).getAbsolutePath()); }
return (List) rezult;
}
public static ArrayList<String> findAllFilesInAllSubdirectories(String root) {
ArrayList<String> rezult = new ArrayList<>();
//root = (new File(root)).getAbsolutePath() + "\\";
Stack<String> folders = new Stack<>();
folders.push(root);
while (!folders.empty()) {
String currentFolder = folders.pop();
for (String addres : (new File(currentFolder)).list()) {
addres = (new File(currentFolder)).getAbsolutePath() + "\\" + addres;
addres = new File(addres).getAbsolutePath(); // in case OS Linux translate "\" to "/"
if ((new File(addres)).isFile()) {
rezult.add((new File(addres)).getAbsolutePath());
}
if ((new File(addres)).isDirectory()) {
folders.push(addres);
}
}
}
return rezult;
}
public static void main(String[] args) {
for (String fileAddres : getFileTree(C_ILION_1)) {
System.out.println(fileAddres);
}
}
}