Files.list et d'autres classes de flux apparaissent Trop de solution de fichiers ouverts

scénario de problème

Lors du déploiement du code d'arrière-plan du blog, l'ensemble de la conception sans base de données est adopté et toutes les informations sont basées sur le système de fichiers. Lorsqu'il s'agit de parcourir certaines informations de fichier, la classe java.nio.file.Files est utilisée et la Files.list est utilisé pour la traversée . Cependant, pour les méthodes de flux telles que Files.list, si les ressources ne sont pas fermées, Too many open filesdes erreurs se produiront au fil du temps.

solution

Utilisez try with resourcepour libérer automatiquement les ressources.

Ecriture non améliorée :

...
Files.list(path).forEach(...)
...

Amélioration de l'écriture :

try (Stream<Path> fileList = Files.list(path)) {
    fileList.forEach(...)
} catch (Exception a) {
    ......
}

De cette façon, lors de l'utilisation de Files.list, les fichiers ouverts seront automatiquement fermés pour éviter les erreurs. La même chose peut également être utilisée pour d'autres classes qui héritent d'AutoCloseable, et les rencontres ultérieures seront triées.

épilogue

L'efficacité et la rationalité du code doivent encore être prises en compte, sinon le test précoce ne révélera pas le problème, et il sera trop tard pour le regretter après un long moment.

Guess you like

Origin blog.csdn.net/u012751272/article/details/118859393