TreeMap を 1 つの外部メソッドで拡張するクラスがあります。外部メソッド「open」は、指定されたファイルから次の形式「word:meaning」で行を読み取り、それを TreeMap に追加するとします - put("word", "meaning")。
そのため、RandomAccessFile を使用してファイルを読み取り、キーと値を TreeMap に配置します。TreeMap を印刷すると、適切なキーと値が表示されます。次に例を示します。
{AAAA=BBBB, CAB=yahoo!}
しかし、何らかの理由で get("AAAA") を実行すると null が返されます。
それが起こっている理由とそれを解決する方法はありますか?
ここにコードがあります
public class InMemoryDictionary extends TreeMap<String, String> implements
PersistentDictionary {
private static final long serialVersionUID = 1L; // (because we're extending
// a serializable class)
private File dictFile;
public InMemoryDictionary(File dictFile) {
super();
this.dictFile = dictFile;
}
@Override
public void open() throws IOException {
clear();
RandomAccessFile file = new RandomAccessFile(dictFile, "rw");
file.seek(0);
String line;
while (null != (line = file.readLine())) {
int firstColon = line.indexOf(":");
put(line.substring(0, firstColon - 1),
line.substring(firstColon + 1, line.length() - 1));
}
file.close();
}
@Override
public void close() throws IOException {
dictFile.delete();
RandomAccessFile file = new RandomAccessFile(dictFile, "rw");
file.seek(0);
for (Map.Entry<String, String> entry : entrySet()) {
file.writeChars(entry.getKey() + ":" + entry.getValue() + "\n");
}
file.close();
}
}