Maison> développement back-end> Golang> le corps du texte

Comment marquer des fichiers zip comme exécutables Unix ?

WBOY
Libérer: 2024-02-14 08:18:08
avant
887 Les gens l'ont consulté

如何将 zip 中的文件标记为 unix 可执行文件?

L'éditeur php Xiaoxin vous présentera comment marquer les fichiers du fichier zip comme fichiers exécutables Unix. Dans les systèmes Unix, l'attribut exécutable d'un fichier est déterminé par les autorisations du fichier, nous devons donc modifier les autorisations des fichiers dans le fichier zip. Tout d’abord, décompressez le fichier zip dans le dossier cible. Ensuite, utilisez la commande chmod pour modifier les autorisations du fichier. Enfin, reconditionnez les fichiers modifiés dans un fichier zip. Avec cette étape simple, vous pouvez marquer les fichiers de votre fichier zip comme exécutables Unix.

Contenu de la question

Je souhaite écrire une fonction comme celle-ci :

func MarkFileAsExecutable(zipPath, filePath string) error
Copier après la connexion

Il reçoit le chemin du zip et le chemin du fichier dans le zip. Le but est d'utiliser le packagezippour modifier les attributs externes d'un fichier interne, en le marquant comme exécutable Unix.

Veuillez noter que marquer le fichier comme exécutable avant de l'archiver à l'aide dechmod +xn'est pas une solution car j'en ai besoin pour travailler sous Windows. Par conséquent, je dois modifier l'archive zip existante en conséquence.chmod +x归档文件之前将文件标记为可执行文件并不是一个解决方案,因为我需要它在 windows 上工作。因此,我需要相应地修改现有的 zip 存档。

解决方法

您可以使用zip包。它提供了一个reader和一个writer

Solution de contournement

Vous pouvez utiliser le package . Il fournit un lecteuret un écrivain. Vous ouvrez l'archive zip avec Reader. Vous parcourez ensuite les fichiers de l'archive, modifiez les autorisations si nécessaire et copiez les fichiers sur l'enregistreur. Ceci est un exemple minimal sans vérification d'erreur :
package main import ( "archive/zip" "os" ) func main() { r, _ := zip.OpenReader("example.zip") defer r.Close() f, _ := os.Create("output.zip") defer f.Close() w := zip.NewWriter(f) defer w.Close() for _, f := range r.File { f.SetMode(0777) w.Copy(f) } }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!