我正在做一个项目,我的代码必须是最有效的,我需要从文件中读取ascii字符和整数。问题(我认为)是当我读取字符时,它读取UTF8,因为它只读取它应该读取的一半。
我尝试使用DataInputStream但它不起作用。我也检查了RandomAccessFile,但它读取的是UTF8。当我尝试读取两个字节并将它们转换为char时,Scanner抛出一个InputMismatchException。
唯一的选择是手动完成吗?
提前致谢
答案 0 :(得分:3)
一次读取一个字节。这将是你想要的价值。例如,使用RandomAccessFile read()
方法:
read()从此文件中读取一个字节的数据。该字节作为一个返回 整数,范围为0到255(0x00-0x0ff)。如果没有,此方法会阻止 输入仍然可用。
示例:
int asciiValue randomAccessFile.read();
然后您可以将ìnt
投射到char
char character = (char) asciiValue;
答案 1 :(得分:0)
我发现了问题所在。问题在于,当您使用BufferedWriter编写字符和整数时,它会将all转换为char,这使得无法直接从文件中读取整数类型。我将尝试用DataOutputStream编写,使用direclty写入int和chars的方法。