Groovy (Fichier IO): recherche de tous les fichiers et renvoyer tous les fichiers - le Groovy façon
Ok, ça devrait être facile...
Je suis nouveau sur groovy et je suis à la recherche pour mettre en œuvre la logique suivante:
def testFiles = findAllTestFiles();
Jusqu'à présent, je suis venu avec le code ci-dessous qui ont réussi à s'imprime tous les noms de fichiers. Cependant, au lieu de l'impression, j'ai juste besoin de les placer dans une collection. Bien sûr, je pouvais faire ce que le vieux java façon: il vous suffit d'instancier une collection, ajouter tous les éléments et à les renvoyer. Cependant, ce n'est pas de m'enseigner quoi que ce soit.
Alors, comment faites-vous cela à la cool, "Groovy"?
static File[] findAllTestFiles() {
def directory = new File("src/test/java");
def closure = {File f -> if(f.name =~ /Test\.java$/) println f }
directory.eachFileRecurse FileType.FILES, closure
return null;
}
Je suis à la recherche pour mettre en œuvre findAlltestFiles() en Groovy, en utilisant aussi peu de code que possible, tout en restant lisible.
OriginalL'auteur gMale | 2010-10-29
Vous devez vous connecter pour publier un commentaire.
Je voudrais essayer d'éviter la construction de la collection. À l'aide de fermetures, vous pouvez séparer la logique de sélectionner les fichiers à partir de ce que vous voulez vraiment faire, comme suit:
Alors si vous voulez faire quelque chose sur les fichiers de test, vous pouvez le faire directement sans la constitution d'une liste en mémoire:
ou si vraiment vous voulez la liste, vous pouvez facilement générer, à l'aide de la collection de sens:
J'ai ré-écrit la totalité de mon script, en essayant de concevoir avec fermetures à l'esprit. Parfois, ça fait mal à ma tête un peu pour penser à elle, profondément. Mais je suis vendu sur Groovy, j'aurai donc un peu de livres, et commencer à maîtriser cette nouvelle approche. Je suis ravi d'apprendre comment utiliser Groovy de la Console... merci pour votre aide.
OriginalL'auteur ataylor
Une nouvelle, et plus générique de chemin à parcourir un répertoire qui prend en charge de multiples fermeture rappels est
parcourir
.OriginalL'auteur btiernay
quelque chose comme cela devrait fonctionner
ou je pense que la modification de votre code comme ceci
OriginalL'auteur Aaron Saunders
La suite n'a pas été testé, mais la méthode findAll devrait aider à rendre votre code très concis:
OriginalL'auteur Yevgeniy Brikman