2017-03-26 11 views
0
私はバイナリファイルで働いている、と私は書いて、それから読み取るしようとしている

、私はこれらの二つの機能を持っています私は関数ListToBinを使用してすべてがうまく行くがBinToList関数を呼び出すときにエラーが発生する:のRandomAccessFileのJava不正な入力

java.io.UTFDataFormatException: malformed input around byte 41

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

getMarcaとgetNomは文字列を返します.getCilindradaは短いです!

+1

ListToBin関数では、リストサイズのforループと内部のfor-eachループがあるので、ListToBin関数で**完全**リストを頻繁に書いていますそれ。それは問題を引き起こさないが、依然として不必要である –

答えて

3

writeChars()で書かれており、各文字に正確に2バイトが書き込まれます。しかし、readUTF()で読むと、1文字につき1バイト以上(文字に応じて)読み込みます。

writeChars()readChars()、またはwriteUTF()readUTF()のいずれかを使用してください。

関連する問題