J'utilise l'expression ci-dessous regex:motif de fichiers regex
Pattern p = Pattern.compile("(.*?)(\\d+)?(\\..*)?");
while(new File(fileName).exists())
{
Matcher m = p.matcher(fileName);
if(m.matches()) { //group 1 is the prefix, group 2 is the number, group 3 is the suffix
fileName = m.group(1) + (m.group(2) == null ? "_copy" + 1 : (Integer.parseInt(m.group(2)) + 1)) + (m.group(3)==null ? "" : m.group(3));
}
}
Cela fonctionne bien pour filename
comme abc.txt
mais s'il y a un fichier avec un nom abc1.txt
la méthode ci-dessus donne abc2.txt
. Comment rendre la condition regex ou changer (m.group(2) == null ? "_copy" + 1 : (Integer.parseInt(m.group(2)) + 1))
pour qu'il me retourne abc1_copy1.txt
comme nouveau nom de fichier et non abc2.txt
et ainsi de suite comme abc1_copy2
etc.
il suffit de changer - '(Integer.parseInt (m.group (2)) + 1))' 'à (m.group (2) + "_copie" + 1) ' –
@RohitJain Cela ne fonctionnera pas car il continuera à ajouter' _copy1' – user850234