2012-03-20 88 views
0

我有一个读取图像文件(.jpg,.bmp,.png)的Java程序,并使用聚类算法在该文件上创建索引。但问题是,我每次都必须明确指定要编制索引的图像文件的名称。我想要的是一个代码,它会自动扫描我的Linux系统中存在的所有图像并为它们编制索引。我发现它可能通过shell脚本,但仍然没有得到它。通过shell脚本从Java程序中的计算机读取图像文件

+0

发布脚本代码和你的java应用程序需要的参数 - 你怎么称呼它 – Adrian 2012-03-20 15:01:11

+0

你想要做什么?让shell使用系统的所有映像多次调用你的程序,或让你的Java程序扫描你的磁盘并自己找到所有的映像?你试过什么了? – 2012-03-20 15:01:16

+0

请考虑编辑你的问题,以包括你的图片文件的意思样本,创建的索引样本(或至少非两者的非泛型描述)。然后我们需要查看一些样本,说明如何通过处理来更改数据。最后,你应该包括你迄今为止尝试过的一些代码。这一切都应该适合整齐地在屏幕上约50行。现在,我不知道你的意思是图像文件,如Windows磁盘映像或tif/jpeg图像或???。你的意思是索引内容(内部)或文件名。祝你好运。 – shellter 2012-03-20 15:03:24

回答

0

从我的理解,你想通过一个java程序执行一个* .sh脚本,然后循环一个文件夹中的一些文件?

你有没有尝试过这样的事情:

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(); 
} 

此只给出一个大概的了解,你需要做什么,但你的要点

+0

但是,这只适用于我分配给cmd字符串的文件夹路径....如果我想从整个文件系统读取图像怎么办? – adi 2012-03-20 15:20:04

+0

您可以通过将参数添加到您的cmd字符串来将参数传递给您的脚本,就像在shell中一样。如果您向脚本提供文件,它将适用于文件系统中的任何文件 – Molske 2012-03-20 15:28:46

0

您可以使用发现,和管道输出到您的程序:

find \(-name "*.jpg" -or -name "*.png" \) -printf "%h/%f\n" | java YourProgram 

并从标准输入读取文件名(包括路径)(假设它们都不包含换行符)。

对于整个文件系统,你会从根目录开始:

find/... 

更好的解决方案,而不是太难实现,将是,从程序搜索的一个平台中立的方式将文件,并且只给它一条起点。 Here is a good solution,你只需要为文件类型(jpg,png,bmp)应用一个过滤器。

相关问题