繁体   English   中英

Java如何从randomaccessfile读取到字符串?

[英]Java how to read from randomaccessfile into string?

我有一个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无法解析或不是字段

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM