Ce que j'essaie d'accomplir est le suivant: Supposons que j'ai une fonction qui écrit une image dans un répertoire de fichiers (SD ou cache interne)). Après avoir écrit le fichier, j'effectue une vérification pour voir si mon répertoire d'images est dans une certaine taille totale de fichier (en ce moment, j'utilise ce function pour calculer récursivement la taille du fichier du répertoire). Si le fichier que je viens d'ajouter rend ce répertoire trop grand, alors je veux continuer à supprimer les anciens fichiers jusqu'à ce que nous soyons juste en dessous de cette taille de fichier maximale. Je pensais d'abord trier les membres du répertoire de fichiers les plus anciens en premier (via comparateur, ordre croissant en utilisant example), puis convertir le tableau en ArrayList pour obtenir son Iterator, alors que la taille de notre répertoire est toujours au dessus de taille maximale du fichier, et j'ai encore des fichiers à parcourir, je supprime les fichiers plus anciens jusqu'à ce que je sors de cette boucle tout. Y a-t-il un moyen plus efficace d'accomplir cela?Supprimer le (s) fichier (s) le plus ancien (s) dans un répertoire jusqu'à ce qu'il soit sous une certaine taille
4
A
Répondre
1
Votre goulot d'étranglement sera sans doute lié aux opérations du système de fichiers (lire le contenu du répertoire et supprimer les fichiers), pas à la manipulation en mémoire, vous ne devriez donc pas trop vous soucier de l'efficacité de ce dernier. tant que vous ne faites pas quelque chose de grossièrement inefficace.
L'algorithme approximatif que vous décrivez fonctionne correctement. Vous pouvez éviter la conversion ArrayList en faisant simplement quelque chose comme:
for (Pair pair : pairs) {
if (totalSize <= maxSize) {
break;
}
totalSize -= pair.f.length();
pair.f.delete();
}
Questions connexes
- 1. SQL Substring - Supprimer le (s) dernier (s) caractère (s)
- 2. Ancien programmeur de bureau veut créer le projet S + S
- 3. recueillir le (s) fichier (s) d'utilisateurs
- 4. ASP.NET - using System.IO.File.Delete() pour supprimer le (s) fichier (s) du répertoire dans wwwroot?
- 5. Validation Regex - montrer le (s) caractère (s) fautif (s). javax.validation
- 6. Git: Suppression du (des) objet (s) associé (s) à un ancien commit
- 7. Voir le (s) fichier (s) pour l'algorithme de modifications
- 8. Rechercher dans le (s) fichier (s) XML dans linux
- 9. Taille Perl du (des) premier (s) paquet (s) reçu (s)
- 10. Comment identifier si le (s) fichier (s) téléchargé (s) a (ont) été complètement téléchargé (s)?
- 11. '-respondsToSelector:' introuvable dans le (s) protocole (s)
- 12. Comment allumer/éteindre le (s) moniteur (s)?
- 13. Comment empêcher svn mises à jour sur le (s) fichier (s)/dossier (s) spécifique (s)?
- 14. Nommez JQuery: connaissez-vous le (s) plugin (s) jquery (s) spécifique (s) utilisé (s) pour créer ce widget?
- 15. Supprimer le caractère "'s" dans la chaîne
- 16. Est-ce que cette regex a un ou deux groupes? "^ \\ s * (. *?) \\ s + - \\ s + '(. *)' \\ s * $"
- 17. Fichier (s) CSS et Javascript cumulé (s)
- 18. agrep: seulement retourner le (s) meilleur (s) résultat (s)
- 19. question (s) concernant le (s) graphique (s) de tournoi
- 20. Lire la base de données S-Plus sans S-Plus?
- 21. Supprimer le (s) caractère (s) final (s) de la chaîne en Javascript
- 22. Supprimer les lignes basées sur le (s) caractère (s) dans une position spécifique sur la ligne
- 23. .htaccess supprimer plusieurs sous-chaîne ou sous-répertoire cache (s)
- 24. PHP Télécharger le (s) fichier (s) en dehors de webroot
- 25. Outil/API pour extraire le (s) mot (s) clé (s) dans une phrase en .net
- 26. Recherche du (des) point (s) le (s) plus proche (s) en les classant
- 27. Widget/plugin Wordpress - contenu basé sur le (s) texte (s)/page (s) visible (s)?
- 28. Obtenez le (s) parent (s) de cours?
- 29. java: trouver le (s) fichier (s) RSS (s) d'un site web
- 30. Le (s) moyen (s) le plus simple pour rendre un paquet Julia disponible aux autres
Alors oui, j'ai ajouté cet extrait après le tri. J'espère que ça fonctionnera quand je l'essayerai aujourd'hui. –