【问题标题】:Java RandomAccessFile how to Read nth byte as a characterJava RandomAccessFile如何将第n个字节读取为字符
【发布时间】:2015-12-06 19:06:50
【问题描述】:

我正在学习 java 文件操作,我试图在文本文件中读取第 n 个字节作为字符。我使用了 RandomAccessFile(我不确定这是否是在这里使用的正确模块),我的代码是

import java.io.RandomAccessFile;
public class testclass {

public static void main(String[] args) throws IOException {
    RandomAccessFile f = new RandomAccessFile("temptext.txt", "r");
    f.seek(200);
    System.out.println(f.readChar());
    }
}

这是打印一些未知字符,文本文件中没有提到。我在这里做错了什么?如果我能做到这一点,我的最终目标是使用 forloop 反转文本文件中的整个文本。

【问题讨论】:

  • 字节和字符并不总是对齐(例如 utf-8)。你在文本文件中有什么字符集?
  • @Jan 它是 linux 中的默认 ascii 文本,带有 linux 样式的行终止符。它是用 vi 创建的。

标签: java seek randomaccessfile


【解决方案1】:

查看JavaDoc

public final char readChar() 抛出 IOException

从此文件中读取一个字符。此方法从文件中读取两个字节,>从当前文件指针开始。如果按顺序读取的字节是 b1 > 和 b2,其中 0

因此,为了使您的示例正常工作,您应该改用 readByte()

【讨论】:

  • 谢谢Jan。在这之后,我可以看到返回的值是字符的ASCII值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
相关资源
最近更新 更多