我想将文件读入字符的ArrayList。起初我认为这可能是一个非常光滑的方式:
ArrayList<Character> char_chain = new ArrayList<Character>();
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
while (dis.available() != 0) {
// UTF8 unnoetig, da 26 Lettern
while (!EOF) {
try {
char_chain.add(dis.readChar());
} catch (EOFException e) {
EOF = true;
}
}
}
if (debug) {
while (char_chain.get(i) instanceof Character) {
System.out.println(char_chain.get(i++));
}
}
如果我这样做,我会收到中文信件:
噖
䝃
塘
䕅
有人可以告诉我为什么会这样吗? :)我应该提到文本包含常规的大写字母,如:ABCDE等。
答案 0 :(得分:1)
DataInputStream.readChar()
假设您正在阅读UTF-16字符。
要读取字符数据,请使用带有正确编码的InputStreamReader
(如果文件只包含基本的拉丁字母,则“US-ASCII”就足够了。)