Este artigo descreve o método de obter o caminho absoluto de um arquivo por Java. Compartilhe para sua referência. O método de implementação específico é o seguinte:
Copie o código da seguinte forma:/**
* Obtenha o caminho absoluto em que o arquivo de classe de uma classe está localizado. Essa classe pode ser a própria classe do JDK, uma classe definida pelo usuário ou uma classe em um pacote de desenvolvimento de terceiros.
* Desde que seja uma classe que possa ser carregada neste programa, ela pode estar localizada no caminho absoluto de seu arquivo de classe.
*
* @param cls
* Atributo da classe de um objeto
* @RETURN O caminho absoluto para a localização do arquivo de classe desta classe. Se não houver definição para esta classe, o NULL será retornado.
*/
Private String getPathFromClass (classe CLS) lança ioexception {
Caminho da string = null;
if (cls == null) {
lançar novo nullPointerException ();
}
Url url = getclassLocationurl (cls);
if (url! = null) {
caminho = url.getPath ();
if ("jar" .equalsignorecase (url.getprotocol ())) {
tentar {
caminho = novo URL (caminho) .getPath ();
}
Catch (malformedurlexception e) {
}
int location = path.indexOf ("!/");
if (localização! = -1) {
caminho = path.substring (0, localização);
}
}
Arquivo de arquivo = novo arquivo (path.replaceall ("%20", "");
path = file.getCanonicalPath ();
}
caminho de retorno;
}
/**
* Obtenha o URL do local do arquivo de classe. Este método é o método mais básico desta classe e é para outros métodos chamar.
*/
URL privado getClassLocationurl (classe final CLS) {
if (cls == null) {
lançar uma nova ilegalArgumentException ("classe que a entrada é nula");
}
Resultado url = nulo;
Final String CLsasResource = cls.getName (). substituir ('.', '/').concat(".class ");
ProtectionDomain final PD = cls.getProtectionDomain ();
if (pd! = null) {
Código final CS = pd.getCodesource ();
if (cs! = null) {
resultado = cs.getLocation ();
}
if (resultado! = null) {
if ("arquivo" .equals (resultado.getProtocol ())) {
tentar {
if (resultado.toexternalform (). endswith (".
resultado = novo url ("jar:". concat (resultado.toexternalform ()). concat ("!/"). concat (clsasresource));
}
caso contrário, if (novo arquivo (resultado.getFile ()). IsDirectory ()) {
resultado = novo URL (resultado, clsasresource);
}
}
Catch (malformedurlexception ignore) {
}
}
}
}
if (resultado == null) {
ClassLoader de classe final clsloader = cls.getclassloader ();
resultado = clsloader! = nulo?
}
resultado de retorno;
}
Espero que este artigo seja útil para a programação Java de todos.