Maison développement back-end Golang Apprenez les fonctions d'exploitation de fichiers en langage Go et implémentez les fonctions de compression, de cryptage, de téléchargement et de décompression de fichiers.

Apprenez les fonctions d'exploitation de fichiers en langage Go et implémentez les fonctions de compression, de cryptage, de téléchargement et de décompression de fichiers.

Jul 30, 2023 pm 05:21 PM
加密 压缩 文件操作

Apprenez les fonctions d'exploitation de fichiers en langage Go et implémentez les fonctions de compression, de cryptage, de téléchargement, de téléchargement et de décompression de fichiers

Dans les applications informatiques modernes, l'exploitation de fichiers est une fonction très importante. Pour les développeurs, l'apprentissage et la maîtrise des fonctions d'exploitation des fichiers peuvent non seulement améliorer l'efficacité du développement, mais également ajouter des fonctions pratiques aux applications. Cet article explique comment utiliser les fonctions d'exploitation de fichiers dans le langage Go et implémenter les fonctions de compression, de cryptage, de téléchargement et de décompression de fichiers.

Tout d'abord, nous devons comprendre certaines fonctions de base des opérations sur les fichiers en langage Go.

  1. Créer un fichier

Pour créer un nouveau fichier, nous pouvons utiliser la fonction Créer dans le package os.

file, err := os.Create("example.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()
Copier après la connexion
  1. Write data

Pour écrire des données dans un fichier, nous pouvons utiliser la méthode Write de l'objet fichier.

data := []byte("Hello, World!")
_, err = file.Write(data)
if err != nil {
    log.Fatal(err)
}
Copier après la connexion
  1. Lecture de données

Pour lire les données d'un fichier, nous pouvons utiliser la méthode Read de l'objet fichier.

data := make([]byte, 100)
n, err := file.Read(data)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Read %d bytes: %s
", n, data[:n])
Copier après la connexion
  1. Supprimer des fichiers

Pour supprimer des fichiers, vous pouvez utiliser la fonction Supprimer dans le package os.

err := os.Remove("example.txt")
if err != nil {
    log.Fatal(err)
}
Copier après la connexion

Maintenant que nous maîtrisons les fonctions de base d'exploitation des fichiers, nous pouvons continuer à mettre en œuvre les fonctions de compression, de cryptage, de téléchargement, de téléchargement et de décompression de fichiers.

Tout d’abord, voyons comment compresser et décompresser des fichiers. Nous pouvons utiliser le package archive/zip pour y parvenir.

func compressFile(filename string) {
    zipfilename := filename + ".zip"
    zipFile, err := os.Create(zipfilename)
    if err != nil {
        log.Fatal(err)
    }
    defer zipFile.Close()

    zipWriter := zip.NewWriter(zipFile)
    defer zipWriter.Close()

    file, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    fileInfo, err := file.Stat()
    if err != nil {
        log.Fatal(err)
    }

    header, err := zip.FileInfoHeader(fileInfo)
    if err != nil {
        log.Fatal(err)
    }

    writer, err := zipWriter.CreateHeader(header)
    if err != nil {
        log.Fatal(err)
    }

    _, err = io.Copy(writer, file)
    if err != nil {
        log.Fatal(err)
    }
}

func decompressFile(zipfilename string) {
    zipFile, err := zip.OpenReader(zipfilename)
    if err != nil {
        log.Fatal(err)
    }
    defer zipFile.Close()

    for _, file := range zipFile.File {
        rc, err := file.Open()
        if err != nil {
            log.Fatal(err)
        }
        defer rc.Close()

        newFile, err := os.Create(file.Name)
        if err != nil {
            log.Fatal(err)
        }
        defer newFile.Close()

        _, err = io.Copy(newFile, rc)
        if err != nil {
            log.Fatal(err)
        }
    }
}
Copier après la connexion

Voyons ensuite comment crypter et décrypter des fichiers. Nous pouvons utiliser le package crypto/aes pour y parvenir.

func encryptFile(filename string, key []byte) {
    inputFile, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer inputFile.Close()

    outputFile, err := os.Create(filename + ".enc")
    if err != nil {
        log.Fatal(err)
    }
    defer outputFile.Close()

    block, err := aes.NewCipher(key)
    if err != nil {
        log.Fatal(err)
    }

    iv := make([]byte, aes.BlockSize)
    outputFile.Write(iv)

    outputFileWriter := cipher.StreamWriter{
        S: cipher.NewCTR(block, iv),
        W: outputFile,
    }

    _, err = io.Copy(outputFileWriter, inputFile)
    if err != nil {
        log.Fatal(err)
    }
}

func decryptFile(filename string, key []byte) {
    inputFile, err := os.Open(filename + ".enc")
    if err != nil {
        log.Fatal(err)
    }
    defer inputFile.Close()

    outputFile, err := os.Create(filename + ".dec")
    if err != nil {
        log.Fatal(err)
    }
    defer outputFile.Close()

    block, err := aes.NewCipher(key)
    if err != nil {
        log.Fatal(err)
    }

    iv := make([]byte, aes.BlockSize)
    inputFile.Read(iv)

    inputFileReader := cipher.StreamReader{
        S: cipher.NewCTR(block, iv),
        R: inputFile,
    }

    _, err = io.Copy(outputFile, inputFileReader)
    if err != nil {
        log.Fatal(err)
    }
}
Copier après la connexion

Maintenant que nous avons implémenté les fonctions de compression, de cryptage et de décodage de fichiers, voyons comment implémenter le téléchargement et le téléchargement de fichiers. Nous pouvons utiliser le package net/http pour y parvenir.

func uploadFile(filename string, url string) {
    file, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile("file", filepath.Base(filename))
    if err != nil {
        log.Fatal(err)
    }

    _, err = io.Copy(part, file)
    if err != nil {
        log.Fatal(err)
    }

    writer.Close()

    request, err := http.NewRequest("POST", url, body)
    if err != nil {
        log.Fatal(err)
    }
    request.Header.Add("Content-Type", writer.FormDataContentType())

    client := &http.Client{}
    response, err := client.Do(request)
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    fmt.Println("Upload OK!")
}

func downloadFile(url string, filename string) {
    response, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    file, err := os.Create(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    _, err = io.Copy(file, response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Download OK!")
}
Copier après la connexion

Nous avons désormais implémenté des fonctions de compression, de cryptage, de téléchargement, de téléchargement et de décompression de fichiers. Nous pouvons utiliser ces fonctions selon nos propres besoins pour gérer les opérations sur les fichiers et les besoins de transfert de fichiers. En utilisant ces fonctions ensemble, nous pouvons développer des fonctions d'exploitation de fichiers plus sécurisées et plus efficaces.

Résumé : Cet article présente les fonctions d'opération de fichiers dans le langage Go et fournit des exemples de codes pour la compression, le cryptage, le téléchargement et la décompression de fichiers. En apprenant et en maîtrisant ces fonctions, nous pouvons ajouter des fonctions d'exploitation de fichiers plus pratiques et plus puissantes à nos applications. J'espère que cet article vous sera utile pour apprendre et utiliser le langage Go pour gérer les opérations sur les fichiers.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment lire et écrire des fichiers en toute sécurité avec Golang ? Comment lire et écrire des fichiers en toute sécurité avec Golang ? Jun 06, 2024 pm 05:14 PM

Lire et écrire des fichiers en toute sécurité dans Go est crucial. Les directives incluent : Vérification des autorisations de fichiers Fermeture de fichiers à l'aide de reports Validation des chemins de fichiers Utilisation de délais d'attente contextuels Le respect de ces directives garantit la sécurité de vos données et la robustesse de vos applications.

Paramètres du taux de compression maximum de 7-zip, comment compresser 7zip au minimum Paramètres du taux de compression maximum de 7-zip, comment compresser 7zip au minimum Jun 18, 2024 pm 06:12 PM

J'ai découvert que le package compressé téléchargé à partir d'un certain site Web de téléchargement sera plus volumineux que le package compressé d'origine après décompression. La différence est de plusieurs dizaines de Ko et de dizaines de Mo. S'il est téléchargé sur un disque cloud ou un espace payant, cela n'a pas d'importance. si le fichier est petit, s'il y a beaucoup de fichiers, le coût de stockage sera considérablement augmenté. J'ai fait quelques recherches à ce sujet et je peux en tirer des leçons si nécessaire. Niveau de compression : compression 9 extrême Taille du dictionnaire : 256 ou 384, plus le dictionnaire est compressé, plus il est lent. La différence de taux de compression est plus grande avant 256 Mo, et il n'y a aucune différence de taux de compression après 384 Mo. Taille du mot : maximum 273. Paramètres : f=BCJ2, le taux de compression des paramètres de test et d'ajout sera plus élevé

Conseils de programmation Go : suppression du contenu d'un fichier Conseils de programmation Go : suppression du contenu d'un fichier Apr 04, 2024 am 10:06 AM

Le langage Go propose deux méthodes pour effacer le contenu d'un fichier : en utilisant io.Seek et io.Truncate, ou en utilisant ioutil.WriteFile. La méthode 1 consiste à déplacer le curseur à la fin du fichier, puis à tronquer le fichier, la méthode 2 consiste à écrire un tableau d'octets vide dans le fichier. Le cas pratique montre comment utiliser ces deux méthodes pour effacer le contenu des fichiers Markdown.

Comment configurer le cryptage de l'album photo sur un téléphone mobile Apple Comment configurer le cryptage de l'album photo sur un téléphone mobile Apple Mar 02, 2024 pm 05:31 PM

Sur les téléphones mobiles Apple, les utilisateurs peuvent crypter les albums photos selon leurs propres besoins. Certains utilisateurs ne savent pas comment le configurer. Vous pouvez ajouter les images qui doivent être cryptées au mémo, puis verrouiller le mémo. Ensuite, l'éditeur présentera la méthode de configuration du cryptage des albums photo mobiles pour les utilisateurs intéressés, venez jeter un œil ! Tutoriel sur les téléphones mobiles Apple Comment configurer le cryptage de l'album photo iPhone A : Après avoir ajouté les images qui doivent être cryptées au mémo, allez verrouiller le mémo pour une introduction détaillée : 1. Entrez dans l'album photo, sélectionnez l'image qui doit être cryptée. crypté, puis cliquez sur [Ajouter à] ci-dessous. 2. Sélectionnez [Ajouter aux notes]. 3. Saisissez le mémo, recherchez le mémo que vous venez de créer, saisissez-le et cliquez sur l'icône [Envoyer] dans le coin supérieur droit. 4. Cliquez sur [Verrouiller l'appareil] ci-dessous

Comment insérer du contenu à un emplacement spécifié dans un fichier en utilisant C++ ? Comment insérer du contenu à un emplacement spécifié dans un fichier en utilisant C++ ? Jun 04, 2024 pm 03:34 PM

En C++, utilisez la classe ofstream pour insérer du contenu à un emplacement spécifié dans un fichier : ouvrez le fichier et localisez le point d'insertion. utiliser

Comment chiffrer le package compressé dans la méthode de package compressé chiffré winrar-winrar Comment chiffrer le package compressé dans la méthode de package compressé chiffré winrar-winrar Mar 23, 2024 pm 12:10 PM

L'éditeur vous présentera trois méthodes de cryptage et de compression : Méthode 1 : cryptage La méthode de cryptage la plus simple consiste à saisir le mot de passe que vous souhaitez définir lors du cryptage du fichier, et le cryptage et la compression sont terminés. Méthode 2 : Cryptage automatique La méthode de cryptage ordinaire nous oblige à saisir un mot de passe lors du cryptage de chaque fichier. Si vous souhaitez crypter un grand nombre de packages compressés et que les mots de passe sont les mêmes, nous pouvons définir le cryptage automatique dans WinRAR, puis juste quand. En compressant les fichiers normalement, WinRAR ajoutera un mot de passe à chaque package compressé. La méthode est la suivante : ouvrez WinRAR, cliquez sur Options-Paramètres dans l'interface de configuration, passez à [Compression], cliquez sur Créer un mot de passe de configuration par défaut. Entrez le mot de passe que nous voulons définir ici, cliquez sur OK pour terminer le réglage, nous n'avons besoin que de corriger

Comment compresser un dossier et l'envoyer en wps Comment compresser un dossier et l'envoyer en wps Mar 20, 2024 pm 12:58 PM

Les employés de bureau utilisent très fréquemment le logiciel wps au travail. Parfois, ils saisissent plusieurs fichiers par jour, puis les envoient au responsable ou à un emplacement désigné. Alors, comment le logiciel wps compresse-t-il un dossier et le conditionne-t-il pour l'envoi ? . Cette étape de l'opération. Tout d’abord, organisez les fichiers et dossiers que vous souhaitez envoyer dans le même dossier. Si vous avez beaucoup de fichiers, c'est une bonne idée de nommer chaque fichier afin qu'il soit plus facile à identifier lors de l'envoi. Deuxième étape, cliquez cette fois sur ce gros dossier, puis faites un clic droit. Sélectionnez "Ajouter aux archives". Étape 3 : À ce stade, le logiciel nous aidera automatiquement à empaqueter nos fichiers. Sélectionnez « Compresser vers XX.zip ». Ce zip est le format d'emballage, puis cliquez sur Compresser maintenant.​

winrar 64 bits-Comment décompresser Winrar ? winrar 64 bits-Comment décompresser Winrar ? Mar 18, 2024 pm 12:55 PM

WinRAR est un puissant outil de gestion de fichiers compressés qui offre des fonctionnalités riches et une interface facile à utiliser. La version WinRAR 64 bits est spécialement optimisée pour les systèmes d'exploitation 64 bits et peut mieux utiliser les ressources et les performances du système. Ensuite, laissez l'éditeur vous présenter Winrar 64 bits et vous expliquer comment décompresser Winrar ! 1. Qu'est-ce que le logiciel Winrar 64 bits ? WinRAR est un puissant gestionnaire de packages compressés. Ce logiciel peut être utilisé pour sauvegarder vos données, réduire la taille des pièces jointes aux e-mails, décompresser les fichiers RAR, ZIP et autres téléchargés sur Internet et créer de nouveaux fichiers aux formats RAR et ZIP. La dernière version de WINRAR est Wi

See all articles