2012-05-11 14 views
16

Quiero extraer el nombre de una ruta absoluta. Si tengo una cadena con el valor/mnt/sdcard/Videos/Videoname, quiero guardar una cadena con el valor Videoname.Obtener el nombre de la ruta absoluta, subserie de la última barra, android java

La cadena está cambiando y no puedo obtener previamente el número de barras diagonales. ¿Cómo podría dividir una subcadena de la última barra?

/mnt/sdcard/Videos/Videoname -> Videnoname

+1

String name = "/ mnt/sdcard/Videos/Videoname"; Cadena newName = name.substring (name.lastIndexOf ("/") + 1, name.length()); –

+0

Siga este enlace a una pregunta respondida similar a la suya. https://stackoverflow.com/questions/4050087/how-to-obtain-the-last-path-segment-of-an-uri# –

Respuesta

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

Si tienes si de un "archivo" objeto, lo puede conseguir con el método:

String fileName = myFile.getName(); 

Si lo tienes desde una simple cadena, puede utilizar

String fileName = myString.substring(myString.lastIndexOf("/")+1); 
+2

-1. La versión de cadena es incorrecta, '"/mnt/sdcard/Videos/Videoname "' devolvería '"/Videoname "'. Use la API 'File' como sugerí, p. nuevo archivo ("/ mnt/sdcard/Videos/Videoname"). getName() que devolverá el '' Videoname '' correcto. – dacwe

+1

Tienes razón, olvidé agregar +1 al índice ... Pero, con seguridad, la versión del "Archivo" es más clara;) –

+0

¡Ahora, eso es mejor! – dacwe

21

Debe ir a través de la api File. Citado de la documentación File.getName():

Devuelve el nombre del archivo o directorio indicado por esta ruta de acceso abstracta. Este es solo el último nombre en la secuencia de nombre de la ruta de acceso. Si la secuencia del nombre de la ruta está vacía, se devuelve la cadena vacía.

Ejemplo:

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

Pero con un poco más de investigación, el siguiente código funciona ...

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

que necesita para escapar de la "\" dos veces.

+0

En realidad, la pregunta era sobre las barras diagonales '/' en lugar de las barras diagonales inversas '\'. – LarsH

6
String path = "/mnt/sdcard/Videos/Videoname"; // Your path 

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

forma más fácil es

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

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

Ahora usted tiene un last.htm en la cadena de ruta.

Cuestiones relacionadas