我有一個問題與我的邏輯,我將不勝感激一些指針。當我嘗試迭代目錄中的一組文件並將以.txt結尾的文件存儲在另一個數組中時,我的代碼會生成數組越界異常。JAVA - 數組越界錯誤
我想我的問題是,所有文件的數組大於txt文件的數組,這似乎是錯誤的最合乎邏輯的原因。問題是我不知道爲什麼它會在第二個循環中發現更多的txt文件。
下面是代碼:
public static void ListFiles(String file_dir) {
String files;
int txtCounter = 0;
File folder = new File(file_dir);
File[] listOfFiles = folder.listFiles();
//Count all txt files
for (int y = 0; y < listOfFiles.length; y++) {
if (listOfFiles[y].isFile()) {
files = listOfFiles[y].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT")) {
txtCounter++;//Add to the count
}
}
}
//Create array for the list of txt files.
String txtFiles[] = new String[txtCounter];
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
files = listOfFiles[i].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT")) {
//Add all txt files to new array txtFiles
txtFiles[i] = folder + files;
System.out.println(txtFiles[i]);
}
}
}
//Send array back to Main
//return txtFiles[];
}
上午我做這個難度比它必須是?我試圖獲取文本文件的列表,替換文件中的某些單詞,並在完成時將它們合併到一個文件中。
謝謝!
更新:
public static String[] ListManualSections(String file_dir) {
file_dir = file_dir + "\\manualSections\\";
String files;
//Create list of all files in the manualSections directory.
File folder = new File(file_dir);
File[] listOfFiles = folder.listFiles();
//Dynamic list of text files
ArrayList al = new ArrayList();
//Add each occurrence of a text file to the ArrayList
for (int i = 0; i < listOfFiles.length; i++) {
files = listOfFiles[i].getName();
if (listOfFiles[i].isFile() && files.toLowerCase().endsWith(".txt")) {
al.add(folder + "\\" + files);
//System.out.println(al);
}
}
//Send list back to Main
String[] txtFiles = (String[]) al.toArray(new String[al.size()]);
return txtFiles;
}
我很感激回覆。我最終按照你的建議使用了ArrayList。我會發布完成的方法爲別人的參考,但我不知道如何使其正確發佈。該工具沒有工作。 – Anthony
我編輯原始帖子,包括我所做的。它適用於我,大多數!我仍然在努力解決爲什麼它只將它處理的最後一個文件保存到新文檔中。 – Anthony
僅供參考,您應該使用泛型與'ArrayList' –