私は単純なテキスト辞書ファイルを持っていますが、これは ';'で区切られた単語を含んでいます。すべての単語を読み込んで、 (辞書ファイルは非常に大きいかもしれません)。ここ は、私がコンソールにこれらの単語を印刷しようとしています私のコードです:charを読み込んでバッファ文字列に追加するjava
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
public class Dictionary {
private static Dictionary instance;
private Map DictionaryMap;
private String delimiter;
private Dictionary() {
}
private Dictionary(String dictfile, String delimiter) throws FileNotFoundException, IOException
{
FileReader fr = new FileReader(dictfile);
int position = 0;
StringBuffer buffer = new StringBuffer();
while ((position = fr.read()) != -1) {
char symbol = (char) fr.read();
if(symbol != ';') {
buffer.append(symbol);
System.out.println("Char is : "+symbol+" ;");
} else {
System.out.println("String is "+buffer+" ;");
buffer.delete(0, buffer.length()-1);
}
}
}
public void loadFromFile(File dictfile, String delimiter) {
}
public String getDelimiter() {
return delimiter;
}
public void setDelimiter(String delimiter) {
this.delimiter = delimiter;
}
しかし、私は含まれていたサンプルdict.txtファイル、上でこのコードを実行しようとしています:
test1; test2;
区切り文字(CHAR ';')の間のシンボルの一部が表示されない:チャーは
である:E。 Charは:t; 文字列はet; Char:e; Charは:t; Charは:;
Charは:\ uffff;
私の質問なぜ正しく動作しないと、どのようにfileinputstream(私の場合)から型キャストなしで文字を読み取るには?
一般的なコメント。ファイルが大きい場合は、代わりにBufferedReaderを使用して速度を向上させることができます。これは、チャンク内のファイルを内部バッファに読み込みます。あなたは、ファイルを扱うときに得ることができるすべての速度が必要です。ファイルから読み取る別の方法は、StreamTokenizerで、デリミタ(あなたの場合は "、")を指定することができ、トークンを供給します。 – Optimist