Прежде чем вы выскажете что-то вроде «Этот парень просит помочь с домашним заданием», я продолжу и развею все ваши сомнения и скажу да, это связано с домашним заданием. Тем не менее, я надеюсь, что это не умаляет знаний, которые этот вопрос дает мне и / или любому, кто прочитает это в будущем.
Предыстория: в настоящее время мы работаем над рекурсией, и наше задание требует, чтобы мы написали программу, которая использует аргументы команды для проверки каталога и содержимого его файла на наличие строки (это также аргумент команды). Мы должны использовать рекурсию для этого.
- Я хочу прояснить, что Я ПОНИМАЮ, ЧТО ЗАДАЕТ ЗАДАНИЕ. Я просто спрашиваю, как это будет работать рекурсивно, потому что я просто не понимаю.
Мы решили задачу, где нам нужно было найти размер каталога, и это имело смысл, но я не понимаю, как проверить, является ли что-то каталогом или файлом, и на основе этого мы читаем его содержимое или углубляемся в каталог до тех пор, пока находим файл.
Вот что я сделал на данный момент. Не слишком уверен, насколько это неправильно, поскольку я полностью основываюсь на задании «проверить размер каталога», которое мы ранее выполняли:
Папка, которую я проверяю, выглядит примерно так: Каталог ---> файлы --внутри основного каталога --->> Два каталога --> файлы в обоих этих каталогах
открытый класс SearchingForStrings {
public static void main(String[] args) {
String path = "."; // default location of this project
File sf = new File(path);
String mysteriesDirectory = args[0];
String keyString = args[1];
countLinesWithString(sf, mysteriesDirectory, keyString);
}
public static int countLinesWithString(File startPath, String mysteriesDirectory, String keyString) {
if(!startPath.exists()) {
throw new IllegalArgumentException("File " + startPath + " does not exist!");
} else if(startPath.isFile()) {
return Integer.parseInt(startPath.getAbsolutePath()); // Just to show where the file is I located the parsing is just to stop an error from flagging on this part; Going to ask professor if it's okay with him
// this is where we would begin reading the contents of the files
} else if(startPath.isDirectory()) {
// This is where our recursion would take place: essentially
// we will be going 'deeper' into the directory until we find a file
//File[] subFiles = startPath.listFiles();
countLinesWithString(startPath, mysteriesDirectory, keyString);
} else {
throw new IllegalStateException("Unknown file type: " + startPath);
}
}
}
Вкратце: может ли кто-нибудь объяснить, как будет работать рекурсия, если вы хотите углубиться в директора (y / ies)?