【问题标题】:Read ascii charactres and ints from file (java)从文件中读取 ascii 字符和整数 (java)
【发布时间】:2013-03-01 21:51:35
【问题描述】:

我正在做一个项目,我的代码必须尽可能高效,并且我需要从文件中读取 ascii 字符和整数。问题(我认为)是当我读取字符时,它会以 UTF8 读取,因为它只读取了它应该读取的一半。

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

是否唯一的选择是手动执行此操作?

提前致谢

【问题讨论】:

  • 只是为了验证一下,您选择的语言是Java,对吗? Java 通常不是高效操作的首选语言。
  • 只有一次,我希望看到有人说他们的代码必须是最容易被其他人理解的。
  • 在此处查看接受的答案:stackoverflow.com/questions/93423/… 诀窍是 CharacterSet。
  • 如果您展示您的代码,人们可以帮助您修改它以使其正常工作。
  • @BlackVegetable 是的,它是 java :p

标签: java int ascii


【解决方案1】:

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

read() 从此文件中读取一个字节的数据。字节返回为 0 到 255 (0x00-0x0ff) 范围内的整数。如果没有,此方法将阻塞 输入尚未可用。

例子:

int asciiValue randomAccessFile.read();

然后你可以将ìnt 转换为char

char character = (char) asciiValue;

【讨论】:

  • 是的,我将使用带有缓冲区的 DataInputStream 来实现,因为我需要提高效率。谢谢。
【解决方案2】:

我发现了问题所在。问题是,当您使用 BufferedWriter 编写 char 和 int 时,它会将所有内容转换为 char,这使得无法直接从文件中将 int 作为类型读取。我将尝试使用 DataOutputStream 编写,使用直接写入 int 和 char 的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多