我有一个读取图像文件(.jpg,.bmp,.png)的Java程序,并使用聚类算法在该文件上创建索引。但问题是,每次我必须明确地给出该图像文件的名称,该文件将被索引。我想要的是一个代码,它将自动扫描Linux系统中存在的所有图像并对其进行索引。我发现它可以通过shell脚本但仍然没有得到它。
答案 0 :(得分:0)
根据我的理解,你想通过java程序执行一个* .sh脚本,而java程序又循环一个文件夹中的某些文件?
你有没有试过这样的事情:
public void runCmd() throws IOException, InterruptedException {
String cmd = "/home_dir/./my_shell_script.sh";
Runtime run = Runtime.getRuntime();
Process pr = run.exec(cmd);
pr.waitFor();
}
这只是粗略地了解你需要做什么,但你得到了要点
答案 1 :(得分:0)
您可以使用find,并将其输出传递给您的程序:
find \( -name "*.jpg" -or -name "*.png" \) -printf "%h/%f\n" | java YourProgram
从stdin读取文件名(包括路径)(假设它们都不包含换行符)。
对于整个文件系统,您将从根目录开始:
find / ...
更好的解决方案,并不是太难实现,将以平台中立的方式从您的程序中搜索文件,并且只给它一个起始路径。 Here is a good solution,您只需要为文件类型(jpg,png,bmp)应用过滤器。