Maison > Article > développement back-end > Apprenez les fonctions d'exploitation des fichiers en langage Go et implémentez la fonction de cryptage, de compression et de téléchargement des fichiers
Apprenez les fonctions d'opération de fichiers dans le langage Go et implémentez la fonction de cryptage, de compression et de téléchargement des fichiers
Le langage Go est un langage de programmation puissant et flexible grâce auquel nous pouvons facilement effectuer des opérations sur les fichiers. Cet article présentera les fonctions d'opération de fichiers dans le langage Go et implémentera la fonction de téléchargement de cryptage et de compression des fichiers via un exemple de code.
1.1 Créer des fichiers et des répertoires :
os.Create(filename) : crée un nouveau fichier et renvoie un pointeur de fichier.
os.Mkdir(dirname, perm) : Créez un nouveau répertoire. Le paramètre perm est l'autorisation du répertoire.
os.MkdirAll(dirname, perm) : Créez des répertoires multi-niveaux de manière récursive. Le paramètre perm est l'autorisation du répertoire final.
1.2 Ouvrir le fichier :
os.Open(filename) : ouvre le fichier spécifié et renvoie un pointeur de fichier.
os.OpenFile(filename, flag, perm) : ouvrez le fichier spécifié, le paramètre flag est la méthode d'ouverture et le paramètre perm est l'autorisation du fichier.
1.3 Lire des fichiers :
os.Read(file, data) : lit les données du fichier spécifié et les enregistre dans data.
1.4 Écrire dans un fichier :
os.Write(file, data) : Écrivez les données dans data dans le fichier spécifié.
1.5 Fermez le fichier :
file.Close() : Ferme le fichier spécifié.
func encryptFile(filename string) error { file, err := os.OpenFile(filename, os.O_RDWR, 0644) if err != nil { return err } defer file.Close() fileInfo, err := file.Stat() if err != nil { return err } fileSize := fileInfo.Size() data := make([]byte, fileSize) _, err = file.Read(data) if err != nil { return err } // 异或加密算法 key := []byte("mykey") for i := 0; i < len(data); i++ { data[i] = data[i] ^ key[i%len(key)] } _, err = file.Seek(0, 0) if err != nil { return err } _, err = file.Write(data) if err != nil { return err } file.Sync() return nil }
Le code ci-dessus crypte les données du fichier spécifié via l'algorithme de cryptage XOR et les réécrit dans le fichier d'origine.
func compressFile(filename string) error { compressName := filename + ".gz" file, err := os.Open(filename) if err != nil { return err } defer file.Close() compressFile, err := os.Create(compressName) if err != nil { return err } defer compressFile.Close() // 创建gzip.Writer gz := gzip.NewWriter(compressFile) defer gz.Close() _, err = io.Copy(gz, file) if err != nil { return err } return nil }
Le code ci-dessus compressera le fichier spécifié et l'enregistrera au format .gz.
func uploadFile(filename string, url string) error { file, err := os.Open(filename) if err != nil { return err } defer file.Close() // 使用multipart.Writer构建HTTP请求 body := new(bytes.Buffer) writer := multipart.NewWriter(body) defer writer.Close() part, err := writer.CreateFormFile("file", filename) if err != nil { return err } _, err = io.Copy(part, file) if err != nil { return err } // 发送HTTP请求 req, err := http.NewRequest("POST", url, body) if err != nil { return err } req.Header.Set("Content-Type", writer.FormDataContentType()) httpClient := &http.Client{} _, err = httpClient.Do(req) if err != nil { return err } return nil }
Le code ci-dessus télécharge le fichier spécifié vers l'URL spécifiée via la méthode POST.
Sur la base du code ci-dessus, nous pouvons implémenter la fonction de téléchargement de cryptage et de compression des fichiers. L'exemple de code est le suivant :
func main() { // 加密文件 err := encryptFile("test.txt") if err != nil { fmt.Println("加密文件失败:", err) return } // 压缩文件 err = compressFile("test.txt") if err != nil { fmt.Println("压缩文件失败:", err) return } // 上传文件 err = uploadFile("test.txt.gz", "http://example.com/upload") if err != nil { fmt.Println("上传文件失败:", err) return } fmt.Println("文件加密压缩上传成功") }
Grâce au code ci-dessus, nous pouvons implémenter la fonction de téléchargement de cryptage et de compression des fichiers. Il s'agit d'un exemple simple que vous pouvez étendre et optimiser selon vos besoins. J'espère que cet article sera utile pour apprendre et utiliser le langage Go pour 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!