繁体   English   中英

RandomAccessFile Java格式错误的输入

[英]RandomAccessFile java malformed input

我正在使用二进制文件,并且试图从它们进行读写,我有以下两个功能:

 public static void ListToBin (List<ModelVehicle> llModVeh,List<Vehicle> llVeh,String NomFitxerXml){


         try {
             File ff = new File("pruebas.bin");
        RandomAccessFile raf = new RandomAccessFile(ff, "rw");
        int q = llModVeh.size();
        raf.writeInt(q);
        for (int i = 0; i < q; i++) {
            for(ModelVehicle m : llModVeh){
                raf.writeChars(m.getNom() );
                raf.writeChars(m.getMarca());
                raf.writeShort(m.getCilindrada());
            }
        }
        raf.close();
    } catch (FileNotFoundException ex) {

    } catch (IOException ex) {

    }
 } 

和:

 public static void BinToList(List<ModelVehicle> llModVeh,List<Vehicle> llVeh,String NomFitxerXml){
     try {
         llModVeh =new ArrayList();
         File ff = new File("pruebas.bin");
         RandomAccessFile raf = new RandomAccessFile(ff, "r");
         int q = raf.readInt();
         if (q < 0) {
             throw new RuntimeException("Fitxer corrupte");
         }
         for (int i = 0; i < q; i++) {
             String nom = raf.readUTF();
             String marca = raf.readUTF();
             Short cilindrada = raf.readShort();


         }
         raf.close();
     } catch (FileNotFoundException ex) {
         Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
     } catch (IOException ex) {
         Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
     }


 }

当我使用ListToBin函数编写所有内容时,一切正常,但是当我调用BinToList函数时,我不断收到错误消息:

java.io.UTFDataFormatException:字节41附近的输入格式错误

在java.io.DataInputStream.readUTF(DataInputStream.java:634)在java.io.RandomAccessFile.readUTF(RandomAccessFile.java:965)在info.infomila.Utils.BinToList(Utils.java:299)在info.infomila。 Prova.main(Prova.java:84)

getMarca和getNom返回一个字符串,getCilindrada很短!

您正在使用writeChars()编写,该writeChars()为每个字符精确地写入2个字节。 但是您使用readUTF()进行读取,每个字符读取1个或更多字节(取决于字符)。

使用writeChars()readChars() ,或writeUTF()readUTF()

暂无
暂无

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

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