[Méthode] Non traitement de données
Bonjour
Voici mon problème. Dans une servlet, je rassemble des nombres correspondant au préfixe de fichiers à partir d'un SGBD dans un ArrayList.
Puis, je parcours cet ArrayList et j'effectue les opérations nécessaires de concaténations pour avoir mes noms de fichiers. En même temps, lorsque j'ai le nom d'un fichier, j'appelle une méthode qui va lancer un processus externe qui traitera ce fichier (Blast, pour ceux qui connaissent).
Seulement, Blast ne traite pas les 4 premiers fichiers de ma liste 8O Le programme m'envoit cette erreur :
Code:
1 2
|
[blastall] FATAL ERROR: blast: Unable to open input file /home/gldavid/Blaster/7167fb7ba4806e855959d04f94048092/7167fb7ba4806e855959d04f940480921155290747/3058.txt |
Or, ce fichier existe et ses droits ne sont pas différents des autres.
Voici la partie "main" de ma servlet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
String cluster = "/home/gldavid/Blaster/"+id_user+"/";
java.util.Iterator i = numamplicons.iterator();
int retour=0;
while(i.hasNext()){
Long l = (Long)i.next();
java.io.File clusterfile = new java.io.File(cluster+id_job+"/"+l.longValue()+".txt");
retour = blast(clusterfile);
if(retour==1){
pw.print("<br /><font color=\"#FF0000\"><b>Oops ! Mistakes !</b></font>");
break;
}
}
if(retour==0)
pw.print("Finished !"); |
Et la méthode blast():
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public int blast(java.io.File file){
String tmp = file.getAbsolutePath();
String xml = file.getAbsolutePath().replace(".txt", ".html");
String cmd = "ssh gldavid@mycluster blastall -p blastn -d nt -i "+tmp+" -o "+xml+"";
try{
java.lang.Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
java.io.BufferedReader error = new java.io.BufferedReader(new java.io.InputStreamReader(process.getErrorStream()));
String s = "";
if(error.ready()){
while((s=error.readLine())!=null){
pw.print("<font color=\"#FF0000\"><b>"+s+"</b></font><br />");
}
return 1;
}
}
catch(IOException ioe){
Blaster.this.pw.print("<font color=\"#FF0000\"><b>7 : "+ioe.getMessage()+"</b></font><br />");
Blaster.this.destroy();
}
catch(InterruptedException ie){
Blaster.this.pw.print("<font color=\"#FF0000\"><b>8 : "+ie.getMessage()+"</b></font><br />");
Blaster.this.destroy();
}
return 0;
} |
Je précise que manuellement, Blast fonctionne avec ce fichier.
Merci d'avance de vos réponses !
@++