es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener el nombre del archivo o archivos dentro del último directorio y la ruta completa del directorio utilizando Swift.

Estoy intentando obtener el nombre de un archivo (en formato JSON pero guardado sin extensión) dentro del último directorio de una ruta dada. Cada archivo se guarda con su propia subruta única dentro del contenedor de datos de la aplicación.

También necesito obtener la ruta completa del archivo, incluyendo el nombre de archivo.

Según lo que he leído, creo que es mejor usar URL para hacer esto en lugar de usar rutas de cadena.

He probado el siguiente código:

do {
    let enumerator = FileManager.default.enumerator(at: filePath, includingPropertiesForKeys: nil)
    while let element = enumerator?.nextObject() as? URL {
        var nexObject = element.lastPathComponent
        print(nextObject)
    }
} catch let error {
    print(error.localizedDescription)
}

Esto parece iterar a través de cada nivel de la ruta hasta el final. Genial, pero ¿cuál es la mejor manera de obtener la ruta completa, incluyendo el nombre de archivo, aparte de la concatenación de cada objeto de arriba?

Cualquier consejo recibido con gratitud. ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la ruta completa del archivo, incluyendo el nombre de archivo, puedes utilizar el método appendingPathComponent(_:) de la clase URL para agregar el último componente de la ruta obtenido del enumerator a la ruta original, y luego utilizar el método absoluteString de la clase URL para obtener la ruta completa como un string.

    Aquí te mostramos cómo puedes modificar tu código:

    do {
        let enumerator = FileManager.default.enumerator(at: filePath, includingPropertiesForKeys: nil)
        while let element = enumerator?.nextObject() as? URL {
            if element.pathExtension == "" { // verifica si el archivo no tiene extensión
                let fullPath = filePath.appendingPathComponent(element.relativePath)
                print("Ruta completa: \(fullPath.absoluteString)")
                let fileName = element.lastPathComponent
                print("Nombre del archivo: \(fileName)")
            }
        }
    } catch let error {
        print(error.localizedDescription)
    }
    

    Ten en cuenta que estamos verificando si el archivo no tiene extensión utilizando la propiedad pathExtension de la clase URL. Si el archivo tiene una extensión, puedes eliminar esta verificación.

    Además, ten en cuenta que estamos utilizando appendingPathComponent(_:) con filePath para obtener la ruta completa, ya que element es una ruta relativa obtenida del enumerator.

Comments are closed.