在您推測類似「這個人要求幫助功課」之類的內容之前,我會繼續並澄清您可能會有的任何疑問,並說是,這與作業有關。但是,我希望這不會從這個問題提供給我和/或將來閱讀此內容的任何人的學習中消除。遞歸:檢查目錄中的文件並閱讀它們
背景:我們目前正在對遞歸和我們的作業要求,我們編寫使用命令參數來檢查目錄和一個字符串的文件內容(這也是一個命令參數)的程序。我們必須爲此使用遞歸。
- 我也想搞清楚的是我明白分配是ASKING 我只是問,如何將這項工作遞歸,因爲我只是不明白這一點。
我們遇到了一個問題,那就是我們必須找到一個目錄的大小,並且它是有道理的,但我不知道如何檢查某個目錄或文件是否是某個目錄或文件,並且基於該目錄我們讀取了其內容或更深入進入目錄直到我們找到一個文件。
這是我目前所做的。不太確定這是多麼的錯誤,因爲我完全不考慮我們以前做的'檢查目錄大小'作業:
我正在檢查的文件夾是這樣的: 目錄--- >文件--inside主目錄--- >>兩個目錄中的這兩個目錄的
公共類SearchingForStrings {
public static void main(String[] args) {
String path = "."; // default location of this project
File sf = new File(path);
String mysteriesDirectory = args[0];
String keyString = args[1];
countLinesWithString(sf, mysteriesDirectory, keyString);
}
public static int countLinesWithString(File startPath, String mysteriesDirectory, String keyString) {
if(!startPath.exists()) {
throw new IllegalArgumentException("File " + startPath + " does not exist!");
} else if(startPath.isFile()) {
return Integer.parseInt(startPath.getAbsolutePath()); // Just to show where the file is I located the parsing is just to stop an error from flagging on this part; Going to ask professor if it's okay with him
// this is where we would begin reading the contents of the files
} else if(startPath.isDirectory()) {
// This is where our recursion would take place: essentially
// we will be going 'deeper' into the directory until we find a file
//File[] subFiles = startPath.listFiles();
countLinesWithString(startPath, mysteriesDirectory, keyString);
} else {
throw new IllegalStateException("Unknown file type: " + startPath);
}
}
}
總之---->文件:可能有人解釋遞歸如何運作k如果你想深入一個導演(y/ies)?
這有點合理 - 早上試一下,因爲我從10月31號凌晨2點起牀,幾乎是我的睡覺時間。如果您仍然願意提供更多建議,我會回覆。再次感謝您提供有用的信息 - 明天早上回來。 – 2014-11-02 02:35:34
想了一下之後,我無法真正理解你在這裏寫的東西 - 特別是'item'位。 'item'究竟是什麼,它是文件,但它是什麼?它是一個保存文件位置的變量,還是我在路徑中創建一個新文件?爲什麼 – 2014-11-02 05:47:38
我試圖用循環的開始來定義這個:「對於目錄中的每個項目」。一個項目是目錄中的一件事,可以是(爲此目的)一個(數據)文件或另一個目錄。換句話說,它是一個變量,用於保存對數據文件或目錄的引用;循環遍歷作爲參數傳遞給方法的目錄中的每個這樣的項目。 (沒想到你回到這麼快......) – arcy 2014-11-02 12:38:09