Quelle est la meilleure façon .Net pour vous assurer un chemin que la capacité de stocker un fichier. Je dois m'assurer que j'ai la place pour le fichier avant que je télécharge est parce que la source ne permettra pas le fichier à télécharger une deuxième fois. J'ai regardé System.IO.DriveInfo mais cela ne fonctionne pas pour les chemins UNC.Quelle est la meilleure façon de vérifier la capacité du système de fichiers en utilisant .Net?
Répondre
Voici une courte fonction tirée de this page qui montre comment vous pouvez obtenir l'espace libre de n'importe quel lecteur (local ou réseau/UNC) en utilisant WMI.
private static ulong GetFreeDiskSpaceInBytes(string drive)
{
ManagementObject disk =
new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");
disk.Get();
return (ulong)disk["FreeSpace"];
}
Si vous WNAT une solution API Win32, vous pouvez utiliser la fonction GetDiskFreeSpaceEx
, comme le suggère this MSDN help page. Il semble aussi prendre en charge les noms de lecteur local et réseau.
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, _
lpFreeBytesAvailableToCaller As Currency, _
lpTotalNumberOfBytes As Currency, _
lpTotalNumberOfFreeBytes As Currency) As Long
Private Sub Form_Click()
Dim Status As Long
Dim TotalBytes As Currency
Dim FreeBytes As Currency
Dim BytesAvailableToCaller As Currency
Status = GetDiskFreeSpaceEx(Text1.Text, BytesAvailableToCaller, _
TotalBytes, FreeBytes)
If Status <> 0 Then
MsgBox Format(TotalBytes * 10000, "#,##0"), , "Total Bytes"
MsgBox Format(FreeBytes * 10000, "#,##0"), , "Free Bytes"
MsgBox Format(BytesAvailableToCaller * 10000, "#,##0"), , _
"Bytes Available To Caller"
End If
End Sub
Si vous rencontrez des problèmes lors de la conversion en C#, faites le moi savoir.
je dois recommander ici la solution WMI, étant entièrement géré (en dehors de moins de lignes), mais non devrait faire l'affaire.
Je suis sûr que vous pourriez obtenir les réponses dont vous avez besoin à l'aide WMI, il est généralement un bon endroit pour commencer.
La seule façon de voir si le disque peut stocker le fichier est de créer en fait un fichier de cette taille sur le disque.
Même si les informations sur le disque indique que suffisant il y a place, en raison de Défragmentation vous pouvez rarement utiliser 100% de l'espace disque libre.
Je pensais m'assurer que deux à trois fois les espaces nécessaires existent juste pour avoir une couverture supplémentaire. Mais merci pour la note –
- 1. Quelle est la meilleure façon de renommer (déplacer) les branches du système de fichiers dans .NET?
- 2. Quelle est la meilleure façon de remplacer du texte dans un fichier en utilisant C#/.NET?
- 3. Quelle est la meilleure façon de gunzip fichiers avec Perl?
- 4. meilleure façon de vérifier la classe
- 5. Quelle est la meilleure façon d'examiner les fichiers access.log d'apache?
- 6. Quelle est la meilleure façon d'afficher des fichiers volumineux sans utiliser de grandes quantités de mémoire?
- 7. Meilleure façon de vérifier la version du projet dépendant
- 8. Quelle est la meilleure façon de glisser la section de html en utilisant javascript?
- 9. Quelle est la meilleure façon de dupliquer fork() dans Windows?
- 10. Quelle est la meilleure façon de vérifier un ListView pour les éléments cochés en C#?
- 11. Quelle est la meilleure façon d'automatiser le remplacement de texte?
- 12. Quelle est la meilleure façon de mettre en cache des fichiers en php?
- 13. quelle est la meilleure façon de marquer un texte?
- 14. Quelle est la meilleure façon de télécharger et d'installer à la demande des DLL dans .NET?
- 15. La meilleure façon de vérifier si le serveur est joignable dans .NET?
- 16. Quelle est la meilleure façon d'exposer l'API de mon serveur?
- 17. Quelle est la meilleure façon de créer une base de données d'accès de noms de fichiers en utilisant C++ Builder?
- 18. Quelle est la meilleure façon de faire ce programme Java?
- 19. Quelle est la meilleure façon de ReadLine par Expression Tree?
- 20. Quelle est la meilleure façon d'utiliser l'API Twitter via PHP?
- 21. Quelle est la meilleure façon de créer des déploiements ClickOnce
- 22. Quelle est la meilleure façon d'obtenir des informations spécifiques au système d'exploitation en Java?
- 23. Quelle est la meilleure façon de vider un répertoire?
- 24. Quelle est la meilleure façon de vérifier si un dossier de site Web existe?
- 25. Quelle est la meilleure façon de vérifier l'existence d'une connexion dans SQL Server 2005
- 26. Quelle est la meilleure façon d'écrire [0..100] en C#?
- 27. En C#, quelle est la meilleure façon d'enchaîner les constructeurs?
- 28. Quelle est la meilleure façon de lire les données CSV?
- 29. Dans ActionScript, quelle est la meilleure façon de vérifier si une propriété de noeud xml existe?
- 30. Quelle est la meilleure façon de copier en profondeur un hachage de hachage en Perl?
Que diriez-vous d'un appel API au lieu de WMI? –
@Matthew: Pourquoi préférez-vous API sur WMI? Il y a une solution extrêmement courte, et en utilisant le WMI, vous restez entièrement géré (en utilisant l'espace de noms System.Management). – Noldorin
Je pense juste qu'un simple PInvoke serait mieux que de jouer dans WMI. Mais je suppose que WMI pourrait fonctionner. –