У меня есть простой текстовый файл словаря, который содержит слова, разделенные ';'. Моя проблема - прочитать все слова и сохранить их на карте без загрузки всего файла в строку (файл словаря может быть очень большим).
Вот мой код, где я пытаюсь распечатать эти слова на консоли:
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 ';') не отображаются:
Чар является: е;
Чар это: т;
Строка это;
Чар это: е;
Чар это: т;
Чар это:;
Char: \ uffff;
Мой вопрос, почему он не работает должным образом и как читать символы из fileinputstream (в моем случае) без приведения типов?