Maison >Java >javaDidacticiel >Comment puis-je récupérer efficacement des ressources à partir d'un répertoire Java Classpath ?

Comment puis-je récupérer efficacement des ressources à partir d'un répertoire Java Classpath ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 21:50:12698parcourir

How Can I Efficiently Retrieve Resources from a Java Classpath Directory?

Obtenir une liste de ressources à partir du répertoire Classpath

Introduction

Obtenir une liste de ressources à partir d'un répertoire Classpath spécifié est une tâche courante dans la programmation Java. Diverses bibliothèques et techniques peuvent être exploitées pour récupérer efficacement ces ressources.

Implémentations de bibliothèques existantes

Spring Framework
Spring Framework fournit le PathMatchingResourcePatternResolver classe qui peut résoudre les ressources à l’aide de modèles de chemin de type Ant. Par exemple :

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath:/x/y/z/*");

Ronmamo Reflections
Ronmamo Reflections offre une approche plus rapide en précompilant la recherche au moment de la compilation, réduisant ainsi la surcharge de performances d'exécution pour les grands chemins de classe.

Reflections reflections = new Reflections("x.y.z");
Set<String> resources = reflections.getResources(Pattern.compile(".*"));

Scanner personnalisé
La création d'un scanner personnalisé est une méthode simple pour obtenir des ressources. Cela implique de parcourir le chemin de classe à l’aide de la méthode getResourceAsStream(). Cependant, elle peut ne pas être aussi efficace que les solutions ci-dessus, en particulier pour les fichiers JAR.

List<String> resources = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(getResourceAsStream("x/y/z")))) {
  String resource;
  while ((resource = br.readLine()) != null) {
    resources.add(resource);
  }
} catch (IOException e) {
  // handle exception
}

Considérations relatives à la mise en œuvre

Le choix de la mise en œuvre dépend des exigences spécifiques. et les considérations de performances. Pour les chemins de classe plus petits et une utilisation peu fréquente, un scanner personnalisé peut suffire. Pour les chemins de classe plus importants ou les exigences en temps réel, il est recommandé d'utiliser les bibliothèques Spring ou Reflections.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn