"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo cerrar archivos dentro de una carpeta sin incluir la carpeta raíz en el archivo?

¿Cómo cerrar archivos dentro de una carpeta sin incluir la carpeta raíz en el archivo?

Publicado el 2025-02-26
Navegar:151

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

Zipping Content dentro de una carpeta sin incluir la carpeta root

Problema: Archives dentro de una carpeta da como resultado una estructura extraída que incluye la raíz carpeta, mientras que el resultado deseado es extraer los archivos sin la carpeta root.

Intento:

El siguiente código es un intento de cerrar la estructura del directorio:

func Zipit(source, target string) error {
    zipfile, err := os.Create(target)
    ...
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
    ...
}

solucionamiento de problemas:

En el código proporcionado, el problema se encuentra en la línea donde se agrega el basado al encabezado.name. Para excluir la carpeta raíz de la estructura extraída, elimine el basado del nombre de archivo.

SOLUCIÓN:

reemplace la siguiente línea:

header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))

con:

header.Name = strings.TrimPrefix(path, source)

enfoques alternativos:

En lugar de modificar manualmente el nombre del encabezado, también puede usar el siguiente enfoque alternativo para excluir la carpeta raíz durante Extracción:

walker := filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
    // Ignore the root directory
    if info.IsDir() && path == source {
        return filepath.SkipDir
    }
    ...
})
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3