/// <summary> /// Normaliza el nombre de la carpeta para quitar posibles caracteres invalidos en el camino del path. /// </summary> /// <param name="nombreCarpeta"></param> /// <returns></returns> public static String NormalizarNombreCarpeta(String nombreCarpeta) { //Obtengo la lista, sacando posibles caracteres barra repetidos. var lista = Cadenas.Parsear(nombreCarpeta, "\\").Where(w => !String.IsNullOrEmpty(w)).ToList(); //Si la ultima de las partes contiene un punto, se lo considera un archivo. if (lista.Last().Contains(".")) { //Lo que vino esta ok. return(Cadenas.UnirLista(lista, "\\")); } else { //Siempre finaliza con una barra. return(Cadenas.UnirLista(lista, "\\") + "\\"); } }
/// <summary> /// Devuelve el nombre de la carpeta de la ruta completa. /// Si la direccion tiene un nombre de archivo, omite dicho nombre de archivo. /// </summary> /// <param name="rutaCompleta"></param> /// <returns></returns> public static String ObtenerNombreCarpetaDeRutaCompleta(String rutaCompleta) { //Normalizo la carpeta como primer medida, para saber que no esta mal formateada. var carpetaNormalizada = NormalizarNombreCarpeta(rutaCompleta); //Separo las secciones. var listaSecciones = Cadenas.Parsear(carpetaNormalizada, "\\"); //Si el ultimo tiene forma de nombre de archivo, entonces se remueve. if (listaSecciones.Last().Contains(".")) { listaSecciones.RemoveAt(listaSecciones.Count - 1); } //Solo devuelvo la ultima. return(listaSecciones.Last()); }
/// <summary> /// Devuelve el nombre del archivo en un path completo. /// </summary> /// <param name="direccion"></param> /// <returns></returns> public static String ObtenerNombreArchivo(String direccion) { //Normalizo la carpeta como primer medida, para saber que no esta mal formateada. var carpetaNormalizada = Carpetas.NormalizarNombreCarpeta(direccion); //Separo las secciones. var listaSecciones = Cadenas.Parsear(carpetaNormalizada, "\\"); //Si el ultimo tiene forma de nombre de archivo, entonces se remueve. if (!listaSecciones.Last().Contains(".")) { throw new DevCityFrameworkException("No se puede obtener el nombre del archivo porque el resultado de la busqueda indica que no hay un nombre de archivo valido y con extension."); } //Retorno el ultimo que es la lista. return(listaSecciones.Last()); }
/// <summary> /// Ingresas una ruta de carpeta y las posiciones por retroceder. /// Devuelve la ubicacion actual luego de retroceder. /// </summary> /// <param name="direccionCarpeta"></param> /// <param name="posicionesRetroceder"></param> /// <returns></returns> public static String NavegarCarpeta(String direccionCarpeta, Int32 posicionesRetroceder) { //Normalizo la carpeta como primer medida, para saber que no esta mal formateada. var carpetaNormalizada = NormalizarNombreCarpeta(direccionCarpeta); //Separo las secciones. var listaSecciones = Cadenas.Parsear(carpetaNormalizada, "\\"); //Compruebo que se puede realizar la operacion if (posicionesRetroceder >= listaSecciones.Count) { throw new DevCityFrameworkException(Cadenas.Formatear("La cantidad de posiciones por retroceder es igual o excede la cantidad de posiciones disponibles por navegar. Existen {0} posicion(es) y se intento retroceder {1} posicion(es).", listaSecciones.Count, posicionesRetroceder)); } //Obtengo solo las partes requeridas var resultado = listaSecciones.Take(listaSecciones.Count - posicionesRetroceder).ToList(); //Y vuelvo a unir. return(NormalizarNombreCarpeta(Cadenas.UnirLista(resultado, "\\"))); }