Maison > Article > développement back-end > Voici quelques options pour un titre anglais sous forme de questions, capturant l’essence de l’article : **Court et direct :** * **Comment conserver les fichiers clairsemés lors de l'utilisation de io.Copy() dans Go ?** * **Peut
io.Copy() transfère les octets bruts entre un io.Reader et un io .Écrivain. Cependant, il n'a pas la capacité de gérer l'emplacement des trous dans les fichiers, qui sont considérés comme des informations secondaires que les appels système comme read(2) cachent aux utilisateurs.
Pour gérer fichiers clairsemés, vous devez utiliser le package syscall et manipuler manuellement les paramètres. Les valeurs SEEK_HOLE et SEEK_DATA de lseek(2) sont essentielles pour ce processus.
Le transfert de fichiers clairsemés est plus complexe. Sous Linux, vous pouvez tenter de percer des trous en utilisant fallocate(2) avec FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE. Si cela échoue, écrivez des blocs remis à zéro dans la destination pour encourager le système d'exploitation à les convertir en trou.
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!