Pessoal, preciso pegar a última string de um path. O valor destacado em vermelho no exemplo abaixo.
\Diretorio1[color=red]Diretorio2[/color]
ou
\Diretorio1\Diretorio2[color=red]Diretorio3[/color] etc.
String nome = instalacaoXml.lerAtributoNome();
A variável nome recebe uma string com o path. ex: “\Diretorio1\Diretorio2”
Quando tento usar String[] valores = nome.split(""); dá o erro:
[color=red]String literal is not properly closed by a double-quote[/color]
Eu fiz o código abaixo onde consigo o resultado, mas gostaria de saber se há uma maneira mais rápida e melhor.
String atributo = tagXml.getAttribute("nome");
StringTokenizer tipo = new StringTokenizer(atributo,"\");
List<String> token = new ArrayList<String>();
while(tipo.hasMoreTokens()){
token.add(tipo.nextToken());
}
int ultimoDaLista = token.size()- 1;
String ultimoToken = token.get(ultimoDaLista);
System.out.println("Último token: " + ultimoToken);
Obrigado.
O que você quer é muito, muito mais fácil usando a classe java.io.File. Além disso o código abaixo deve funcionar para Windows e Linux/Unix. Não misture StringTokenizer (argh - essa classe deveria ser deletada do JDK) e String.split().
File pathArquivo = new File ("c:\temp\teste.xml"); // por exemplo
String nomeArquivo = pathArquivo.getName(); // nomeArquivo vai receber "teste.xml"
substring(int) - retorna uma nova String com os caracteres do índice especificado até o fim
lastIndexOf(String) - retorna o índice da última ocorrência daquela string passada como parâmetro.
Logo, o trecho:
1 - localiza a última posição da barra invertida na sua String
2 - Pega apenas a substring começando do índice da última barra invertida + 1 (para que a barra não seja incluída).