Dieser Artikel beschreibt die Methode, um den absoluten Pfad einer Datei durch Java zu erhalten. Teilen Sie es für Ihre Referenz. Die spezifische Implementierungsmethode lautet wie folgt:
Kopieren Sie den Code wie folgt:/**
* Holen Sie sich den absoluten Pfad, auf dem sich die Klassendatei einer Klasse befindet. Diese Klasse kann eine JDK-eigene Klasse, eine benutzerdefinierte Klasse oder eine Klasse in einem Entwicklungspaket von Drittanbietern sein.
* Solange es sich um eine Klasse handelt, die in diesem Programm geladen werden kann, kann sie auf den absoluten Pfad seiner Klassendatei befinden.
*
* @param cls
* Klassenattribut eines Objekts
* @return den absoluten Pfad zum Ort der Klassendatei dieser Klasse. Wenn es für diese Klasse keine Definition gibt, wird Null zurückgegeben.
*/
Private String GetPathfromClass (Klasse cls) löst IoException {aus
String path = null;
if (cls == null) {
neue nullpointerexception () werfen;
}
URL URL = getClassLocationurl (CLS);
if (url! = null) {
path = url.getPath ();
if ("jar" .equalSignoreCase (url.getProtocol ())) {
versuchen {
Path = neue URL (Pfad) .getPath ();
}
catch (fehl Formaledurlexception e) {
}
int location = path.indexof ("!/");
if (Ort! = -1) {
path = path.substring (0, Ort);
}
}
Datei Datei = neue Datei (Path.ReplaceAll ("%20", ""));
path = file.getCanonicalPath ();
}
Rückweg;
}
/**
* Holen Sie sich die URL der Klassendateispeicherort. Diese Methode ist die grundlegendste Methode dieser Klasse und ist für andere Methoden aufgerufen.
*/
Private URL getClassLocationurl (endgültige Klasse CLS) {
if (cls == null) {
Neue IllegalArgumentException werfen ("Klasse, die Eingabe null ist");
}
URL -Ergebnis = null;
endgültige Zeichenfolge clsasresource = cls.getName (). ersetzen ('.', '/').concat(".class ");
Finale ProtectionDomain PD = Cls.GetProtectionDomain ();
if (pd! = null) {
endgültig codesource cs = pd.getCodesource ();
if (cs! = null) {
result = cs.getLocation ();
}
if (result! = null) {
if ("Datei" .equals (result.getProtocol ())) {
versuchen {
if (result.toexternalForm (). Endswith ("Jar") || result.toexternalForm (). Endswith ("ZIP")) {
result = new URL ("jar:". concat (result.toexternalform ()). concat ("!/"). concat (clsasresource));
}
sonst if (neue Datei (result.getFile ()). isDirectory ()) {
Ergebnis = neue URL (Ergebnis, clsasresource);
}
}
catch (fehl Formaledurlexception ignorieren) {
}
}
}
}
if (result == null) {
Final Classloader clSloader = cls.getClassloader ();
result = clSloader! = null?
}
Rückgabeergebnis;
}
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.