我有一个存储名称,地址,城市,州和邮政编码的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无法解析或不是字段
答案 0 :(得分:1)
javadoc有你的答案。 readUTF
仅用于以前使用writeUTF
写入文件的字符串。如果您的文件具有固定长度的区域,则应使用readfully(byte[])使用适当大小的字节数组,然后使用new String(bytes, StandardCharsets.UTF_8)
将字节数组转换为字符串。