2013-03-13 105 views
0

我在做一个项目,我的代码必须是最有效的,我需要从文件中读取ASCII码字符和整数。问题(我认为)是,当我读取字符时,它读取UTF8,因为它只读取它应该的一半时间。从文件(java)读取ascii字符和整数

我试过用DataInputStream,但它不起作用。此外,我检查了RandomAccessFile,但它读取UTF8。当我尝试读取两个字节并将它们转换为char时,Scanner会抛出InputMismatchException。

这是唯一的选择是用手做这个吗?

在此先感谢

+0

只是为了验证,您选择的语言被强制为Java,是正确的? Java通常不是高效操作的选择语言。 – BlackVegetable 2013-03-13 19:05:35

+0

只有一次,我想看到有人说他们的代码必须是其他人最容易理解的。 – 2013-03-13 19:14:04

+0

查看接受的答案在这里:http://stackoverflow.com/questions/93423/java-reading-an-ascii-file-with-filechannel-and-bytearrays诀窍是CharacterSet。 – Gus 2013-03-13 19:21:09

回答

3

一次读取一个字节。这将是你想要的价值。例如,用RandomAccessFileread()方法:

read()从该文件读取一个字节的数据。该字节返回为 整数,范围为0到255(0x00-0x0ff)。如果还没有 输入可用,则此方法会阻止。

例子:

int asciiValue randomAccessFile.read();

然后你就可以投ìntchar

char character = (char) asciiValue;

+0

是的,我会用带有缓冲区的DataInputStream来做,因为我需要高效。谢谢。 – Camandros 2013-03-14 11:36:07

0

我发现了什么问题。问题是,当你使用BufferedWriter编写字符和整数时,它会将所有字符都转换为char,这使得直接从文件读取int类型成为不可能。我会尝试用DataOutputStream编写,使用方法来直接编写整数和字符。