Maison >développement back-end >Golang >Comment obtenir une liste de tous les lecteurs sur un système Windows à l'aide de Go ?
Obtenir la liste des lecteurs sous Windows à l'aide de Go
Pour rechercher automatiquement des fichiers sur tous les lecteurs d'un système Windows, il est nécessaire de récupérer une liste de tous les lecteurs utilisant Go. Le langage de programmation Go fournit des fonctions d'interaction avec l'API Windows, permettant l'énumération des lecteurs logiques.
Solution
La solution consiste à appeler la fonction GetLogicalDrives depuis le noyau32. bibliothèque dll. Cette fonction renvoie une bitmap indiquant les lecteurs disponibles. En traitant ce bitmap, nous pouvons obtenir les lettres de lecteur correspondant aux lecteurs disponibles :
<code class="go">import ( "fmt" "syscall" ) func main() { kernel32, _ := syscall.LoadLibrary("kernel32.dll") getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives") var drives []string if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 { // handle error } else { drives = bitsToDrives(uint32(ret)) } fmt.Printf("%v", drives) } func bitsToDrives(bitMap uint32) (drives []string) { availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} for i := range availableDrives { if bitMap&1 == 1 { drives = append(drives, availableDrives[i]) } bitMap >>= 1 } return }</code>
La fonction bitsToDrives convertit le bitmap en un tableau de lettres de lecteur, et la fonction principale appelle fmt.Printf( ) pour imprimer la liste des lecteurs. Ce code vous permet de rechercher dynamiquement des fichiers sur tous les lecteurs disponibles sans nécessiter la saisie par l'utilisateur des lettres de lecteur.
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!