file_put_contents()
? GO de PHP n'a pas d'équivalent direct et à fonction unique de PHP file_put_contents()
qui gère toutes ses fonctionnalités (comme ajouter, créer des répertoires, etc.) en une seule fois. Cependant, nous pouvons atteindre les mêmes fonctionnalités en utilisant une combinaison de packages intégrés de Go INTÉRÉS os
et io
. L'approche la plus efficace dépend du cas d'utilisation spécifique.
Pour la rédaction de fichiers simple, ioutil.WriteFile
(déprécié dans GO 1.16, utilisez os.WriteFile
à la place) offre une solution concise:
import ( "os" "io/ioutil" // Or os for newer Go versions ) func main() { data := []byte("This is some text.") err := os.WriteFile("my_file.txt", data, 0644) // 0644 sets permissions if err != nil { panic(err) // Handle errors appropriately - see next section } }
Pour ajouter à un fichier existant, nous utilisons os.OpenFile
avec le os.O_APPEND
Flag:
import ( "os" ) func main() { file, err := os.OpenFile("my_file.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644) if err != nil { panic(err) // Handle errors appropriately } defer file.Close() data := []byte("This is appended text.") _, err = file.Write(data) if err != nil { panic(err) // Handle errors appropriately } }
> os.O_CREATE
Assure le fichier: if err != nil
file_put_contents()
. Cela fournit un équivalent plus robuste et flexible aux divers modes de
.io.Writer
bufio.Writer
import ( "bufio" "os" ) func main() { file, err := os.Create("large_file.txt") if err != nil { panic(err) } defer file.Close() writer := bufio.NewWriter(file) defer writer.Flush() // Crucial: Flush the buffer to ensure all data is written // Write large amounts of data here, using writer.Write() // ... your code to generate and write large amounts of data ... }
bytes.Buffer
Pour des fichiers extrêmement volumineux, envisagez d'utiliser des goroutines et des canaux pour effectuer l'écriture simultanément. Cela permet au programme de continuer à traiter les données pendant que l'écriture se produit en arrière-plan. Cependant, cela ajoute de la complexité et ne peut pas toujours fournir une augmentation significative des performances, sauf si les fichiers vraiment massifs et les opérations liés aux E / O Par exemple, au lieu de ajouter à plusieurs reprises à une chaîne, utilisez os
ou io
Call Function, vérifiez immédiatement les erreurs à l'aide de if err != nil
. fmt.Errorf
pour envelopper l'erreur d'origine avec plus de contexte, facilitant le débogage. Évitez l'échec immédiat. defer file.Close()
Y a-t-il des bibliothèques GO qui offrent des fonctionnalités améliorées pour le fichier I / O au-delà de la bibliothèque standard? Les bibliothèques offrent des fonctionnalités supplémentaires: import ( "os" "io/ioutil" // Or os for newer Go versions ) func main() { data := []byte("This is some text.") err := os.WriteFile("my_file.txt", data, 0644) // 0644 sets permissions if err != nil { panic(err) // Handle errors appropriately - see next section } }
dans les versions GO plus récentes):
fournit une amélioration des erreurs et un emballage, ce qui facilite la gestion et le débogage des erreurs dans les opérations d'E / S de fichiers complexes. Cette bibliothèque facilite les meilleures pratiques discutées ci-dessus.github.com/pkg/errors
Si vous travaillez avec des formats de fichiers spécialisés (par exemple, CSV, JSON, XML), des bibliothèques comme errors
, , et ces analyses de tiers XML fourniront des moyens efficaces et convenables de lire et d'écrire ces tiers xml Fichiers. encoding/csv
encoding/json
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!