String literal is not properly closed by a double-quote [RESOLVIDO]

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"

thingol, obrigo pela resposta.
Mas o path eu leio de um XML através de uma classe Element.

Arquivo xml: O que está em vermelho é o que é recuperado pela classe Element(isso funciona normalmente)



123456


Element tagXml = null;
\restante do código para setar a variável tagXml

String atributo = tagXml.getAttribute(“nome”);\Pega o atributo nome da tag instalacao do xml, ou seja, uma string.

Acho que sua sugestão não servirá nesse caso. Dei uma olhada na API mas não achei nada semelhante.
Se tiver outra idéia, agradeço.

Serve, também. Um arquivo não precisa existir no disco para podermos criar um objeto File a partir dele.

 File pathArquivo = new File (tagXml.getAttribute("nome")); // 
 String nomeArquivo = pathArquivo.getName(); // nomeArquivo vai receber "teste.xml"

De qualquer maneira, uma forma alternativa (e mais rápida) de fazer o que você quer é:

String atributo = tagXml.getAttribute("nome"); // aqui ele recebeu "\Projeto\AAA"
String nome = atributo.substring (atributo.lastIndexOf ('\') + 1);

Leia a documentação para ver por que é que isso funciona.

Legal as informações, das duas formas que vc colocou, deu certo.
Eu li a documentação mas ainda não entendi o funcionamento desse código:

String nome = atributo.substring (atributo.lastIndexOf ('\') + 1);  

Mas depois olho com mais calma.

Obrigado pela ajuda.

Uma ajudinha:

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).