web-dev-qa-db-fra.com

Obtenir le nom du chemin absolu, la sous-chaîne de la dernière barre oblique, Java android

Je veux extraire le nom d'un chemin absolu. Si j'ai une chaîne avec la valeur/mnt/sdcard/Videos/Videoname, je souhaite enregistrer une chaîne avec la valeur Videoname.

La chaîne change et je ne peux pas obtenir auparavant le nombre de barres obliques. Comment pourrais-je séparer une sous-chaîne de la dernière barre oblique?

/ mnt/sdcard/Vidéos/Nom vidéo -> Videnoname

18
Álvaro

Vous devriez passer par le File api. Extrait de la File.getName() documentation:

Renvoie le nom du fichier ou du répertoire désigné par ce chemin abstrait. Ce n'est que le dernier nom de la séquence de noms du chemin d'accès. Si la séquence de noms du nom de chemin est vide, la chaîne vide est renvoyée. 

Exemple:

String name = new File("/mnt/sdcard/Videos/Videoname").getName();
22
dacwe

Si vous avez obtenu un objet "File", vous pouvez le récupérer avec la méthode suivante:

String fileName = myFile.getName();

Si vous l'avez obtenu à partir d'une simple chaîne, vous pouvez utiliser

String fileName = myString.substring(myString.lastIndexOf("/")+1);
11
Jeje Doudou
String path = "/mnt/sdcard/Videos/Videoname"; // Your path

String fileName = new File(path).getName(); // you file name
7
ravz

Le moyen le plus simple est 

String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos);

Maintenant, vous avez le last.htm dans la chaîne de chemin.

2
Xar E Ahmer

Mais avec un peu plus de recherche, le code suivant fonctionne ...

String[] Tokens = stringPath.split("\\\\");

Vous devez échapper deux fois au "\".

1
DareDevil
string a = "/foo/bar/target";
string words = a.Split("/")
string target = words[words.length-1]
0
Adam Weishaupt