Java >> Java-zelfstudie >  >> Tag >> class

Zoek een bestand in classpath

In dit voorbeeld laten we u zien hoe u een bestand in het klassenpad kunt vinden. Om een ​​bestand in het klassenpad te vinden, hebben we een methode gemaakt, File findFileOnClassPath(final String fileName) die een bestandsnaam leest en het bestand retourneert. De methode wordt hieronder beschreven:

  • Het gebruikt de System.getProperty(String key) om het klassenpad van java en het gebruikte padscheidingsteken te vinden.
  • Het maakt een nieuwe StringTokenizer aan om het klassenpad te ontleden, waarbij het padscheidingsteken als scheidingsteken wordt gebruikt.
  • Het haalt de tokens van de StringTokenizer op, met behulp van hasMoreTokens() en nextToken() API-methoden van StringTokenizer.
  • Voor elk token maakt het een nieuw bestand en de absolute vorm van dit bestandspadnaam, met behulp van getAbsoluteFile() API-methode van Bestand.
  • Als het geretourneerde bestand een normaal bestand is, met isFile() API-methode van Bestand, het zoekt naar het bovenliggende bestand, met getParent() API-methode van Bestand en maakt een nieuw bestand van de bovenliggende padnaamreeks en de gegeven padnaamreeks. Als het bestaat, retourneert het het bestand, anders retourneert het het bestand dat is gemaakt met de opgegeven padnaam en de gegeven padnaam,

zoals beschreven in het onderstaande codefragment.


package com.javacodegeeks.snippets.core;


import java.io.File;
import java.util.StringTokenizer;

/**
 * A class containing useful utility methods relating to files.
 */
public class FileUtils {

    public static void main(String[] args){

  

  File classpathFile = findFileOnClassPath("<FILENAME TO FIND IN CLASSPATHS>");

  System.out.print(classpathFile.getName());

  
    }
    /**
     * Returns a reference to a file with the specified name that is located
     * somewhere on the classpath.
     */
    public static File findFileOnClassPath(final String fileName) {


  final String classpath = System.getProperty("java.class.path");

  final String pathSeparator = System.getProperty("path.separator");


  final StringTokenizer tokenizer = new StringTokenizer(classpath, pathSeparator);


  while (tokenizer.hasMoreTokens()) {





final String pathElement = tokenizer.nextToken();



final File directoryOrJar = new File(pathElement);


final File absoluteDirectoryOrJar = directoryOrJar.getAbsoluteFile();



if (absoluteDirectoryOrJar.isFile()) {


    final File target = new File(absoluteDirectoryOrJar.getParent(), fileName);


    if (target.exists()) {



  return target;


    }


} else {


    final File target = new File(directoryOrJar, fileName);


    if (target.exists()) {



  return target;


    }


}


  }

  return null;

    }
}


Dit was een voorbeeld van hoe je een bestand in het klassenpad in Java kunt vinden.

klasse kern java
Java-tag