Java如何从randomaccessfile读入字符串?

时间:2015-11-18 13:02:17

标签: java string byte randomaccessfile

我有一个存储名称,地址,城市,州和邮政编码的randomaccess文件。

它们都是文件中固定大小的字节(每个条目)。我如何从文件中读取每个项目的字符串,如名称,街道等?

我试过

 string name = raf.readUTF(); 

但是我无法控制它读取的字节数会阻止它正常工作吗?或者readUTF如何正常工作,因为在争论中不能提供要读取的总字节数?

或者是更好的方法

 ENTRY1_SIZE = 32;
 raf.read(string1);
 raf.skipBytes(ENTRY1_SIZE - string1.size());
 raf.read(string2);

等等。

在使用randomaccessfile时,最有效的方法是什么? 基本上我想知道如何将N个字节读入一个字符串,以后可以在文本框中显示。

回答以下答案。 我试过你的方法

        long position = 91;
        byte[] b = new byte[32];
        try{
        raf.seek(position);
        raf.readFully(b, position, 32);
        String name = (b, StandardCharsets.UTF_8);

但是这个错误:RandomAccessFile类型中的方法readFully(byte [],int,int)不适用于参数(byte [],long,int)

中间论点应该提供什么?当前文件指针很长,因此无法正常工作。

另一个错误:StandardCharsets无法解析或不是字段

1 个答案:

答案 0 :(得分:1)

javadoc有你的答案。 readUTF仅用于以前使用writeUTF写入文件的字符串。如果您的文件具有固定长度的区域,则应使用readfully(byte[])使用适当大小的字节数组,然后使用new String(bytes, StandardCharsets.UTF_8)将字节数组转换为字符串。