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