私の論理に問題があり、いくつかの指針をいただければ幸いです。ディレクトリ内のファイルの配列を反復処理し、.txt で終わるファイルを別の配列内に保存しようとすると、コードが Array Out Of Bounds Exception を生成します。
私の問題は、すべてのファイルの配列が txt ファイルの配列よりも大きいことだと思います。これがエラーの最も論理的な理由のようです。問題は、最初のループと比べて 2 番目のループで 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[];
}
私はこれを必要以上に難しくしていますか?テキスト ファイルのリストを取得し、ファイル内の特定の単語を置き換え、完了したらそれらをすべて 1 つのファイルに結合しようとしています。
ありがとう!
更新しました:
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;
}