Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

Topic-icon Important Récupérer liste de fichiers d'un dossier avec leurs tailles dans un fichier.txt

More
09 Apr 2019 16:19 #1 by madeleine
Bonjour,

Je souhaite récupérer la liste des noms fichiers d'un dossier avec leurs tailles dans un fichier flag existent déjà dans le même dossier.

Pour cela j'utilise la brique scripting Action en PJ.

Mon code ne fonctionne toujours pas malgré plusieurs tentatives.

directory = "../FTP/Files/";
outfilePath = "../FTP/Files/flag.txt" ;
var files = new java.io.File.listFiles(directory);
var MyFiles = files[0];
Outfile = new java.io.File(outfilePath);
bw = new java.io.BufferedWriter(new java.io.FileWriter(Outfile));
while (int i=0;i<MyFiles .length; i++){
out = new java.lang.Integer(singleFile.length());
bw.write(MyFiles + " "+ out +" octets");
}
bw.close();

L'objectif est d'avoir le résultat ci-dessous dans le fichier flag.txt:
fichier1 23510 octets
fichier2 656456 octets
fichier3 8464octets
...

merci de votre aide.
Attachments:
More
09 Apr 2019 17:10 #2 by Thomas BLETON
Pourquoi ne pas utiliser les actions FileWait et WriteTxtFile ?

Voici un exemple.

Attachments:
More
10 Apr 2019 09:23 #3 by madeleine
Bonjour,

J'ai implémenté cette solution, mais mon fichier de sortie est vide.
Je suis sur la version S17.2, est-ce que cela peut être dû à ma vieille version ?

Cordialement,
Attachments:
More
10 Apr 2019 09:44 - 10 Apr 2019 09:44 #4 by Thomas BLETON
Le mode Bind pour l'action FileWait est disponible depuis la 17.2.8.

Si votre version est antérieure, vous pouvez lister les fichiers dans une table en glissant le schema sur l'action FileWait, puis faire un SqlFileExport pour générer le fichier.

Sinon, vous pouvez revenir sur l'idée de l'action de scripting. J'ai pris le temps de corriger votre script qui comportait des erreurs Java :
directory = "d:/temp";
outfilePath = "d:/temp/flag.txt" ;
var files = new java.io.File(directory);
var MyFiles = files.listFiles();
Outfile = new java.io.File(outfilePath);
bw = new java.io.BufferedWriter(new java.io.FileWriter(Outfile));
for (var i=0; i<MyFiles.length; i++) {
	out = new java.lang.Integer(MyFiles[i].length());
	bw.write(MyFiles[i].getName() + " "+ out +" octets\n");
}
bw.close();
Last edit: 10 Apr 2019 09:44 by Thomas BLETON.
More
10 Apr 2019 11:20 #5 by madeleine
Merci beaucoup avec l'Action scripting cela fonctionne bien.