Y at-il un moyen de lancer une nouvelle exception sur le nombre maxmium de fichiers dans un répertoire?Erreur sur le nombre maximal de fichiers
Répondre
Non, il n'y en a pas:
vous pouvez l'attraper avec un plus générique
System.IO.IOException
Et lire le message (sous-jacent) vous pourriez lancer une exception auto-écrite à partir de ce point.
MISE À JOUR I just learned. que vous utilisez la propriété
bool isfull = info.GetFiles().LongLength == 4.294.967.295
. Malheureusement, il va manger toute votre mémoire.
donc en utilisant
DirectoryInfo.EnumerateFiles().Count()
peut-être d'une manière chunked pourrait être une meilleure approche
FYI:
- 65.534 pour FAT32
- 4294967295 POUR NTFS
(source)
Je suppose que votre application sera à court de RAM avant de pouvoir assigner 'true' à la variable' isFull'. Juste en tenant les références à ces 4 milliards d'entrées dans le tableau consommer 4 Go, et c'est excluant les chaînes réelles ... –
lol, j'ai ajouté une explication. –
Je ne connais pas précisément C#, mais je sais que Java n'a pas d'exception spécifique ou d'erreur à lancer pour un lecteur complet. Je suggère simplement de faire votre propre classe d'exception et de l'utiliser. Je suggère d'appeler un FullDirectoryError
ou DirectoryOverflowError
, en supposant que c'est assez sérieux pour être appelé une erreur.
Quelque chose comme ça?
public static void checkFileNumber(string directoryToCheck, int maxNumber)
{
if (Directory.Exists(directoryToCheck))
{
if (Directory.GetFiles(directoryToCheck).Length > maxNumber)
{
throw new Exception("Too many files in " + directoryToCheck);
}
}
}
Assurez-vous use System.IO;
:-)
quel est le nombre maximum d'un répertoire? – Ata
Le code que j'ai posté lève une exception quand il y a plus de maxNumber de fichiers (vrais fichiers et pas de répertoires) dans directoryToCheck. –
Maintenant, j'ai compris: La limite dépend du type de système de fichiers. Une recherche rapide a révélé ces limites: FAT16 512 entrées, FAT32 65 534 entrées, NTFS 4 294 967 295 entrées –
Lancer des exceptions est une action coûteuse; Quand vous pouvez l'éviter, faites-le s'il vous plaît. Essayez de programmer défensivement si c'est possible. Mais lorsque vous en lancez un, vous devez fournir une capture correspondante sur une exception spécifique. Comme Casper Kleijne l'a dit, vous pourriez attraper IOException mais pourquoi en premier lieu voulez-vous attraper quand même? Quelle est l'action compensatoire dans la capture?
Veuillez fournir plus d'informations sur ce que vous voulez réaliser avec.
- 1. Nombre maximal de connexions de fichiers
- 2. Quel est le nombre maximal de fichiers par répertoire? (Linux)
- 3. nombre maximal de colonnes sur un DataGridView
- 4. Nombre maximal d'instructions GLSL
- 5. Tomcat Nombre maximal de téléchargements simultanés de fichiers
- 6. Quelle est la limite du nombre maximal de fichiers?
- 7. com.sun.net.httpserver.HttpServer nombre maximal de connexions?
- 8. Nombre maximal de processus db déjà alloués
- 9. Nombre maximal d'arguments Bash! = Nombre max arguments cp?
- 10. Jxl et nombre maximal de cellules formatées
- 11. nombre maximal d'arêtes dans NodeXl
- 12. Nombre maximal d'options cliquables # IE8
- 13. Nombre maximal de connexions simultanées jBoss
- 14. nombre maximal de tampons sonores OpenAL sur iPhone
- 15. Imbrication d'un nombre maximal de formes sur une surface
- 16. Dépasse le nombre maximal d'instances OpenCore dans android
- 17. Nombre maximal de threads pour une application?
- 18. Nombre maximal de classes du compilateur C++
- 19. Nombre maximal de sockets dans java
- 20. Service WCF Nombre maximal de méthodes
- 21. Oracle 10g Nombre maximal de sessions expirées
- 22. Nombre maximal de requêtes HttpWeb simultanées
- 23. Contrôle TreeView Asp.net - nombre maximal de nœuds
- 24. Nombre maximal de lignes d'un fichier?
- 25. Comment augmenter le nombre maximal de connexions simultanées dans Apache?
- 26. Obtenir le nombre maximal de cellules remplies avec vb.net
- 27. Section UITableView avec le nombre maximal de lignes
- 28. Nombre maximal d'octets pouvant être envoyés sur une connexion TCP
- 29. Crystal Reports Nombre maximal d'instances actives
- 30. Oracle tables temporaires globales - nombre maximal d'enregistrements?
Votre question est très vague. S'il vous plaît soyez plus précis, et lisez http://tinyurl.com/so-hints. –
Qu'avez-vous essayé de faire lorsque vous avez atteint le nombre maximum de fichiers dans un répertoire? Ecrire de nouveaux fichiers? – chakrit
Je suppose qu'il y aura une exception, ou une erreur sur la création du fichier suivant par le système. Voulez-vous dire une limite définie par logiciel? Que voulez-vous faire sur cette exception? Ecrivez le fichier ailleurs? Il suffit ensuite de structurer vos répertoires à l'avance pour éviter cette situation (avec la date, ou un compteur dans le nom du répertoire) ... – pascal