Bonjour à tous,
voila mon problème : je veux renommer une liste de fichiers dans un
repertoire. Les fichiers doivent être inversés, c'est à dire que j'ai
ceci: et je dois avoir la correspondance :
fichier1 fichier5
fichier2 fichier4
fichier3 fichier3
fichier4 fichier2
fichier5 fichier1
Voila le bout de code que j'utilise :
String prems = null;
String deuz = null;
File[] tabFiles = null;
if(cardDir != null && cardDir.isDirectory()){
tabFiles = cardDir.listFiles();
int totFiles = tabFiles.length;
for(int cpt=0;cpt<totFiles/2;cpt++){
prems = tabFiles[cpt].getName();
deuz = tabFiles[totFiles-1-cpt].getName();
boolean ret = false;
String tempdir = System.getProperty("user.dir")+"/data/";
File dest = new File(tabFiles[totFiles-1-cpt].getAbsolutePath()+"temp");
ret = tabFiles[cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
dest = new File(prems);
ret = tabFiles[totFiles-1-cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[totFiles-1-cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
dest = new File(deuz);
ret = tabFiles[cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
}
}
Je renomme donc chaque pair de fichiers en trois temps.
Au début, je ne faisais pas de réaffectation du nouveau fichier dans le
tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non.
Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le
fichier5 de départ.
Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une
autre idée, je suis tout ouïe.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Erwan Arzur
Gart wrote:
Bonjour à tous, voila mon problème : je veux renommer une liste de fichiers dans un repertoire. Les fichiers doivent être inversés, c'est à dire que j'ai ceci: et je dois avoir la correspondance : fichier1 fichier5 fichier2 fichier4 fichier3 fichier3 fichier4 fichier2 fichier5 fichier1
Voila le bout de code que j'utilise :
String prems = null; String deuz = null; File[] tabFiles = null;ç if(cardDir != null && cardDir.isDirectory()){ tabFiles = cardDir.listFiles(); int totFiles = tabFiles.length; for(int cpt=0;cpt<totFiles/2;cpt++){ prems = tabFiles[cpt].getName(); deuz = tabFiles[totFiles-1-cpt].getName(); boolean ret = false; String tempdir = System.getProperty("user.dir")+"/data/"; File dest = new File(tabFiles[totFiles-1-cpt].getAbsolutePath()+"temp"); ret = tabFiles[cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[cpt] = dest; } else { System.err.println("Error while renamingTo"); } dest = new File(prems); ret = tabFiles[totFiles-1-cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[totFiles-1-cpt] = dest; } else { System.err.println("Error while renamingTo"); } dest = new File(deuz); ret = tabFiles[cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[cpt] = dest; } else { System.err.println("Error while renamingTo"); } } } Je renomme donc chaque pair de fichiers en trois temps. Au début, je ne faisais pas de réaffectation du nouveau fichier dans le tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non. Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le fichier5 de départ. Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger très fort les pinceaux, surtout, quand dans un tableau avec un nombre impair de postes, le début et la fin se rejoignent ...
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau sens (avec les Collections, c'est très facile) et j'aurai parcouru les deux tableaux en même temps en faisant des rename ... inconvénient : ça prend plus de place en mémoire ...
Gart wrote:
Bonjour à tous,
voila mon problème : je veux renommer une liste de fichiers dans un
repertoire. Les fichiers doivent être inversés, c'est à dire que j'ai
ceci: et je dois avoir la correspondance :
fichier1 fichier5
fichier2 fichier4
fichier3 fichier3
fichier4 fichier2
fichier5 fichier1
Voila le bout de code que j'utilise :
String prems = null;
String deuz = null;
File[] tabFiles = null;ç
if(cardDir != null && cardDir.isDirectory()){
tabFiles = cardDir.listFiles();
int totFiles = tabFiles.length;
for(int cpt=0;cpt<totFiles/2;cpt++){
prems = tabFiles[cpt].getName();
deuz = tabFiles[totFiles-1-cpt].getName();
boolean ret = false;
String tempdir = System.getProperty("user.dir")+"/data/";
File dest = new
File(tabFiles[totFiles-1-cpt].getAbsolutePath()+"temp");
ret = tabFiles[cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
dest = new File(prems);
ret = tabFiles[totFiles-1-cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[totFiles-1-cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
dest = new File(deuz);
ret = tabFiles[cpt].renameTo(dest);
if(ret){
Trace.println("Rename successful");
tabFiles[cpt] = dest;
}
else {
System.err.println("Error while renamingTo");
}
}
}
Je renomme donc chaque pair de fichiers en trois temps.
Au début, je ne faisais pas de réaffectation du nouveau fichier dans le
tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non.
Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le
fichier5 de départ.
Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une
autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger
très fort les pinceaux, surtout, quand dans un tableau avec un nombre
impair de postes, le début et la fin se rejoignent ...
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau
sens (avec les Collections, c'est très facile) et j'aurai parcouru les
deux tableaux en même temps en faisant des rename ... inconvénient : ça
prend plus de place en mémoire ...
Bonjour à tous, voila mon problème : je veux renommer une liste de fichiers dans un repertoire. Les fichiers doivent être inversés, c'est à dire que j'ai ceci: et je dois avoir la correspondance : fichier1 fichier5 fichier2 fichier4 fichier3 fichier3 fichier4 fichier2 fichier5 fichier1
Voila le bout de code que j'utilise :
String prems = null; String deuz = null; File[] tabFiles = null;ç if(cardDir != null && cardDir.isDirectory()){ tabFiles = cardDir.listFiles(); int totFiles = tabFiles.length; for(int cpt=0;cpt<totFiles/2;cpt++){ prems = tabFiles[cpt].getName(); deuz = tabFiles[totFiles-1-cpt].getName(); boolean ret = false; String tempdir = System.getProperty("user.dir")+"/data/"; File dest = new File(tabFiles[totFiles-1-cpt].getAbsolutePath()+"temp"); ret = tabFiles[cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[cpt] = dest; } else { System.err.println("Error while renamingTo"); } dest = new File(prems); ret = tabFiles[totFiles-1-cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[totFiles-1-cpt] = dest; } else { System.err.println("Error while renamingTo"); } dest = new File(deuz); ret = tabFiles[cpt].renameTo(dest); if(ret){ Trace.println("Rename successful"); tabFiles[cpt] = dest; } else { System.err.println("Error while renamingTo"); } } } Je renomme donc chaque pair de fichiers en trois temps. Au début, je ne faisais pas de réaffectation du nouveau fichier dans le tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non. Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le fichier5 de départ. Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger très fort les pinceaux, surtout, quand dans un tableau avec un nombre impair de postes, le début et la fin se rejoignent ...
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau sens (avec les Collections, c'est très facile) et j'aurai parcouru les deux tableaux en même temps en faisant des rename ... inconvénient : ça prend plus de place en mémoire ...
Gart
Merci pour l'idée des collections, je vais regarder. Sinon, je sais que c'est mal de toucher au tableau. Au début je n'y touchais pas, et ça marchais pas mieux, alors je me suis dit que c'était peut-être ça. Mais maintenant je fait sans le modifier (et ça change rien). Erwan Arzur wrote:
Je renomme donc chaque pair de fichiers en trois temps. Au début, je ne faisais pas de réaffectation du nouveau fichier dans le tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non. Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le fichier5 de départ. Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger très fort les pinceaux, surtout, quand dans un tableau avec un nombre impair de postes, le début et la fin se rejoignent ...
Ca c'est pas grave, puisque je ne parcours le tableau que sur sa moitié. Normalement ça marche bien au niveau du parcours. C'est vraiment le renameTo qui ne marche pas, et je ne vois pas pourquoi.
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau sens (avec les Collections, c'est très facile) et j'aurai parcouru les deux tableaux en même temps en faisant des rename ... inconvénient : ça prend plus de place en mémoire ...
Merci pour l'idée des collections, je vais regarder.
Sinon, je sais que c'est mal de toucher au tableau. Au début je n'y
touchais pas, et ça marchais pas mieux, alors je me suis dit que c'était
peut-être ça. Mais maintenant je fait sans le modifier (et ça change rien).
Erwan Arzur wrote:
Je renomme donc chaque pair de fichiers en trois temps.
Au début, je ne faisais pas de réaffectation du nouveau fichier dans
le tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non.
Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le
fichier5 de départ.
Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une
autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger
très fort les pinceaux, surtout, quand dans un tableau avec un nombre
impair de postes, le début et la fin se rejoignent ...
Ca c'est pas grave, puisque je ne parcours le tableau que sur sa moitié.
Normalement ça marche bien au niveau du parcours. C'est vraiment le renameTo
qui ne marche pas, et je ne vois pas pourquoi.
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau
sens (avec les Collections, c'est très facile) et j'aurai parcouru les
deux tableaux en même temps en faisant des rename ... inconvénient : ça
prend plus de place en mémoire ...
Merci pour l'idée des collections, je vais regarder. Sinon, je sais que c'est mal de toucher au tableau. Au début je n'y touchais pas, et ça marchais pas mieux, alors je me suis dit que c'était peut-être ça. Mais maintenant je fait sans le modifier (et ça change rien). Erwan Arzur wrote:
Je renomme donc chaque pair de fichiers en trois temps. Au début, je ne faisais pas de réaffectation du nouveau fichier dans le tableau, j'ai essayé comme cela pour voir si c'était mieux, mais non. Je me retrouve avec un fichier5temp, plus de fichier1 et toujours le fichier5 de départ. Je ne comprend pas mon erreur. Si quelqu'un peut m'éclairer ou à une autre idée, je suis tout ouïe.
comme tu modifies tabFiles pendant ton traitement, ça doit se mélanger très fort les pinceaux, surtout, quand dans un tableau avec un nombre impair de postes, le début et la fin se rejoignent ...
Ca c'est pas grave, puisque je ne parcours le tableau que sur sa moitié. Normalement ça marche bien au niveau du parcours. C'est vraiment le renameTo qui ne marche pas, et je ne vois pas pourquoi.
Moi j'aurais fait une copie du tableau d'origine trié dans le nouveau sens (avec les Collections, c'est très facile) et j'aurai parcouru les deux tableaux en même temps en faisant des rename ... inconvénient : ça prend plus de place en mémoire ...