フォルダー内のすべてのファイルを読み取りたいのですが、各ファイルの内容はハッシュテーブルに読み取られます。次に、テキスト ファイル内の各単語をこのハッシュテーブルと比較する必要があります。その単語がそのハッシュテーブルのいずれかの単語と一致する場合、そのハッシュテーブルを作成した対応するファイル名に基づいて変数の名前が付けられます。今、私は2つの困難を抱えています:
1.フォルダー内のすべてのファイルのハッシュテーブルのリストを取得する方法。
2.そのハッシュテーブルで単語を見つけるときに変数に名前を付ける方法。
このコードを試してみると、1 つのファイル、1 つのハッシュテーブルで動作します。
Hashtable HashTableName;
public String namebymatching;
// compare the spannedText for words in each dictionary in folder
public OneExtractor() throws IOException {
super();
// location
HashTableName = new Hashtable();
FilenameFilter ff = new OnlyExt("txt");
File folder = new File("/Folder Path/");
File[] files = folder.listFiles(ff);
Map<String, String> map = new LinkedHashMap<String, String>();
for (int i = 0; i < files.length; i++) {
FileReader fr = new FileReader(files[i].getPath());
BufferedReader reader = new BufferedReader(fr);
String st = "", str = " ";
while ((st = reader.readLine()) != null) {
str += st + " ";
}
map.put(files[i].getName(), str);
}
Set set = map.entrySet();
Iterator i = set.iterator();
while (i.hasNext()) {
Map.Entry me = (Map.Entry) i.next();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(
"/Folder Path"+me.getKey()));
} catch (FileNotFoundException ex) {
Logger.getLogger(PersonExtractor.class.getName()).log(Level.SEVERE, null, ex);
}
try {
String line = br.readLine();
HashTableName.put(line.toLowerCase(), 1);
while (line != null) {
line = br.readLine();
if (!line.isEmpty())
HashTableName.put(line.toLowerCase(), 1);
}
} catch (Exception ex) {
} finally {
try {
br.close();
} catch (IOException ex) {
Logger.getLogger(PersonExtractor.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
private boolean isHashTableName(String s) {
return HashTableName.containsKey(s.toLowerCase());
}
///Extension
public static class OnlyExt implements FilenameFilter {
String ext;
public OnlyExt(String ext) {
this.ext = "." + ext;
}
public boolean accept(File dir, String name) {
return name.endsWith(ext);
}
}
// Find word match :
String word = //some function here to extract word;
namebymatching = "NOT" + filename; //filename should be here
if (isHashTableName(spannedText))
namebymatching = "ISPARTOF" +filename;//filename should be here