Comment est-ce que je devrais appeler Win32 API pour les longs chemins de fichier, la seule chose que je veux faire est d'obtenir une liste de tous les fichiers dans ce répertoire (récursivement)C# appelle l'API Win32 pour les chemins de fichier longs?
1
A
Répondre
1
Si vous voulez utiliser les appels Win32 vous devrez d'abord devez utiliser DllImport pour importer le noyau, la syntaxe est comme quelque chose comme ceci et vous devez le faire pour chaque méthode que vous voulez utiliser (c'est tout pseudo-code non testé qui ne décrit que le concept), l'exemple de code convertit votre chemins d'accès aux chemins UNC afin que vous puissiez avoir de longs chemins de fichiers:
using Microsoft.Win32.SafeHandles;
...
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern SafeHandleMinusOneIsInvalid FindFirstFileW(string lpFileName, IntPtr lpFindFileData);
...
public String FindFirstFile(string filepath)
{
// If file path is disk file path then prepend it with \\?\
// if file path is UNC prepend it with \\?\UNC\ and remove \\ prefix in unc path.
if (filepath.StartsWith(@"\\"))
filepath = @"\\?\UNC\" + filepath.Substring(2, filepath.Length - 2);
else
filepath = @"\\?\" + filepath;
...
SafeHandleMinusOneIsInvalid ret = FindFirstFileW(filepath, lpFindFileData);
...
}
Une fois que vous appelez FindFirstFile vous devez appeler FindNextFile pour le fichier suivant dans le répertoire, puis enfin FindClose; pour un exemple complet sur la façon de lister les fichiers dans un répertoire en utilisant l'apparence du noyau Win32 here
Questions connexes
- 1. Convertir des chemins courts (8.3) en longs?
- 2. C++ en utilisant des espaces de noms pour éviter les longs chemins
- 3. Chemins Win32 en tant que cibles/dépendances
- 4. Quel est le problème avec mon appel WINAPI pour gérer les chemins d'accès longs?
- 5. boost :: filesystem :: chemin pour les chemins de fichier unicode?
- 6. Quand .net prendra-t-il en charge les longs chemins de manière native?
- 7. Modulo avec longs entiers longs dans Objective C
- 8. JD Edwards ... appelle C#?
- 9. Chemins de fichier dans ASP.net
- 10. Comment afficher les nombres longs dans Excel?
- 11. GCC prend-il en charge les longs longs int?
- 12. Gestion des chemins de fichier inter-plateforme
- 13. heightForRowAtIndexPath pour NSStrings plus longs
- 14. Expressions régulières et chemins de fichier relatifs
- 15. Les chemins absolus pour PHP incluent
- 16. recompilation simple app Win32 C pour x64
- 17. Impossible de suivre les fichiers longs Paths de Git
- 18. Événements de clavier C++ Win32
- 19. Console C/C++ Windows WIN32
- 20. Regex pour analyser des mots longs
- 21. win32 api pour Process.BeginOutputReadLine
- 22. Localisation des chemins d'installation dans C#
- 23. chemins de fichiers relatifs
- 24. Comment faire pour mapper les chemins dans le fichier de classe sans formulaire ASP.NET
- 25. Scripts longs et documents ouverts
- 26. Comment joindre deux chemins en C#?
- 27. Win32 SDK fenêtre enfant peinture (C/C++)
- 28. Distinction entre les chemins de contrôle d'exécution
- 29. ListBox éléments longs conseils
- 30. NUnit et chemins Probing