2012-03-20 90 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)應用一個過濾器。

相關問題