【发布时间】:2017-08-24 10:05:03
【问题描述】:
我尝试为 ImageJ 制作一个 javascript 代码,其目标是允许我选择一个目录,并将目录和子目录中的所有 jpg 和 jpeg 文件返回给我。 我已经做了这个代码,它对直接孩子很有效,他在子目录上调用了 getJpeg(我已经用一些 IJ.log 验证了它),但是 jpeg 数组不是与递归调用的结果相连接
你有什么想法吗?
importClass(Packages.ij.IJ);
importClass(Packages.ij.plugin.frame.RoiManager);
importClass(Packages.ij.gui.GenericDialog);
importClass(Packages.ij.io.OpenDialog);
importClass(Packages.java.io.File);
var dirstr = IJ.getDirectory("Choose the stacks folder");
var jpeg = getJpeg(dirstr);
for (var i = 0; i < jpeg.length; i++) {
IJ.log(jpeg[i]);
}
function getJpeg(dirst) {
var dir = new java.io.File(dirst);
var names = dir.listFiles();
var jpeg = new Array();
for (var i = 0 ; i < names.length; i++) {
if(names[i].isDirectory()){
jpeg.concat(getJpeg(names[i].getPath()));
continue;
}
var namest = names[i].getName();
if (namest.match(/.*\.jpg|jpeg/)) {
var path = names[i].getPath();
jpeg.push(path);
}
}
return jpeg;
}
谢谢你:)
【问题讨论】:
-
对于数组,我认为它将是 push() 而不是 concat()。正确检查方法
-
谢谢,我会试试的,但我想我会在数组中有一个数组。 w3schools.com/jsreF/jsref_concat_array.asp 编辑;我看到我向您发布文档的错误,concat 是函数的结果,我必须这样做,jpeg = jpeg.concat(getJpeg(names[i].getPath()));我太白痴了
-
@Zeldarck 这是否意味着您解决了您的问题?如果是这样,请将您的解决方案发布为答案并将其标记为已解决。对于您的代码,我建议使用script parameters 而不是
GenericDialog和OpenDialog。有关 ImageJ 的更多问题,ImageJ forum 是最好的提问地点。 -
该代码不适合我,我等待我的伙伴回来标记这个答案:) 这个问题更多是关于 javascript 问题而不是 ImageJ,认为这里是更好的地方,但感谢您的建议:) 我看看脚本参数,谢谢!
标签: javascript file recursion imagej