Hello,
Je ne suis pas vraiment un familier des issues/tracking, mais il me semble qu'il existe un bug dans une fonction - parfaitement secondaire - de Spring, dans FileSystemUtils, au niveau de la méthode copyRecursively, grâce à laquelle on peut copier un répertoire vers un autre.
Elle est très simple : pour chaque élément du répertoire source, si c'est un fichier, elle le copie vers la destination, sinon elle s'appelle récursivement en considérant que c'est un répertoire.
Mais une "chose" sur un système de fichier peut parfaitement n'être ni un fichier, ni un répertoire ; auquel cas, l'appel récursif va planter : la liste du faux répertoire va renvoyer null, et on aura un NullPointerException à la ligne 60.
Je ne sais pas si je suis clair...
Le problème m'est arrivé, sur un fichier que je trimballe de sauvegarde en sauvegarde, de système d'exploitation en système d'exploitation, d'encodage en encodage, et qui n'est plus rien aujourd'hui, le pauvre, sauf pour faire des NullPointerException.
Qu'en pensez-vous ?... J'ai cherché un peu dans le jira de spring mais j'ai rien trouvé qui ressemble à ça...
La solution, que j'ai appliquée, est de transformer ainsi la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public static void copyRecursively(File src, File dest) throws IOException { dest.mkdir(); File[] entries = src.listFiles(); for (int i = 0; i < entries.length; i++) { File file = entries[i]; File newFile = new File(dest, file.getName()); if (file.isFile()) { newFile.createNewFile(); FileCopyUtils.copy(file, newFile); } else if (file.isDirectory()) { copyRecursively(file, newFile); } else System.out.println("file '" + file + "' ni un fichier, ni un répertoire."); // nothing } }
Partager