Я читаю содержимое из файлов каталога. Я должен разделить файлы по их именам, а затем прочитать их содержимое. Когда я запускаю код просто без чтения содержимого, все файлы перечислены с определенным именем файла, но когда я пытаюсь прочитать содержимое, он читает содержимое только из нескольких файлов, фактически только из 10. Но в каталоге около 1000 файлов с определенным именем. Я отправляю код здесь.
for (i = 0; i <= filenames.length; i++) {
read = new FileReader("trainfiles/"+filenames[i]);
br = new BufferedReader(read);
if (filenames[i].matches(".*ham.*")) {
System.out.println("ham:" + filenames[i]);
while ((lines = br.readLine()) != null) {
st = new StringTokenizer(lines);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
br.close();
}
}
Может кто-нибудь сказать мне, где я делаю не так!?
спасибо
РЕДАКТИРОВАТЬ # 1 Я сделал несколько модификаций, о которых мне сказали здесь, но проблема все еще сохраняется, вот код.
for(i=0;i<=filenames.length;i++){
read = new FileReader("trainfiles/"+filenames[i]);
br = new BufferedReader(read);
if(filenames[i].matches(".*ham.*")){
System.out.println("ham:"+filenames[i]);
while((lines = br.readLine())!= null){
st = new StringTokenizer(lines);
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
}
}
br.close();
read.close();
}
РЕДАКТИРОВАТЬ # 2 Теперь код выглядит так, но опять же ... он не дает мне желаемого результата.
for (i = 0; i < filenames.length; i++) {
try {
if (filenames[i].matches(".*ham.*")) {
read = new FileReader("trainfiles/"+filenames[i]);
br = new BufferedReader(read);
System.out.println("ham:" + filenames[i]);
while ((lines = br.readLine()) != null) {
st = new StringTokenizer(lines);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
} finally {
read.close();
br.close();
}
}