ディレクトリのファイルから内容を読み取っています。私はファイルを名前に応じて分離し、その内容を読まなければなりません。コンテンツを読み込まずにコードを実行すると、すべてのファイルが特定のファイル名にリストされますが、コンテンツを読み込もうとすると、ほんのわずかなファイルからコンテンツが読み込まれます。しかし、ディレクトリには約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();
}
}
誰かが私に間違っていると教えてもらえますか?
おかげ
EDIT#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();
}
EDIT#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();
}
}
何の名前はspam.txtているいくつかのファイル、私は言葉だけのハムとスパムを探して、そこに内容を読んでいますが – Maverick
は、ファイルのすべてよろしいです..合計2450個のファイルにあります。..はありません読んでいる?ループの前にファイル名を印刷してみてください。 – javamonkey79
はい、単純に印刷するとすべてのファイルが出力されますが、読み込むコードを書き込むと正確な出力が得られません。 – Maverick