ディレクトリのファイルからコンテンツを読み取っています。名前に従ってファイルを分離してから、その内容を読み取る必要があります。内容を読み取らずにコードを実行すると、すべてのファイルが特定のファイル名で一覧表示されますが、内容を読み取ろうとすると、実際には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();
}
}