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
Libérer: 2024-12-13 21:50:12
original
698 Les gens l'ont consulté

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/*");
Copier après la connexion

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(".*"));
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal