J'ai eu des erreurs très gérées avec des clauses if. Une exception se produit si le chemin n'est pas trouvé. Une exception renvoie la fonction à nouveau. La fonction est récursive. Sûr?Java: fonction dangereuse autorégressive-récursive par IOException?
$ javac SubDirs.java $ java SubDirs Give me an path. . Dir1 Dir2 Give me an path. IT WON'T FIND ME, SO IT RETURNS ITSELF due to Exception caught Give me an path.
Le code de Subdirs.java
ressemble à ceci:
import java.io.*;
import java.util.*;
public class SubDirs {
private List<File> getSubdirs(File file) throws IOException {
List<File> subdirs = Arrays.asList(file.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.isDirectory();
}
}));
subdirs = new ArrayList<File>(subdirs);
List<File> deepSubdirs = new ArrayList<File>();
for(File subdir : subdirs) {
deepSubdirs.addAll(getSubdirs(subdir));
}
subdirs.addAll(deepSubdirs);
return subdirs;
}
public static void search() {
try{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s;
System.out.println("Give me an path.");
while ((s = in.readLine()) != null && s.length() != 0){
SubDirs dirs = new SubDirs();
List<File> subDirs = dirs.getSubdirs(new File(s));
for (File f : subDirs) {
System.out.println(f.getName());
}
System.out.println("Give me an path.");
}
}catch(Exception e){
// Simple but is it safe?
search();
}
}
public static void main(String[] args) throws IOException {
search();
}
}
Pourriez-vous nous aider à reformuler votre question? J'ai du mal à comprendre ce que vous demandez. –
@Sauer: Soit A une fonction récursive. Par le def, B est récursif parce qu'il renvoie A. Est-il sûr d'avoir une fonction récursive avec une fonction récursive interne en utilisant try-catch-loop? – hhh
B retourne lui-même. A retourne lui-même. B a A comme structure interne. A est getSubDirs et B est la recherche. – hhh