已采纳回答 / FarFromAnyRoad
为什么乱码肯定是乱码啊, 你使用了DataOutputStream,把int long String 都存了进去。你打开这个文件,使用系统的notepad程序,notepad程序不知道你这个什么编码,用了ansi,吧intlong什么都放在一起当GBK处理了。怎么做不乱码不要用记事本打开DataOutputStream创建的东西,看不到乱码,眼不见心不烦。你自己知道是什么,用DataInputStream或者InputStream能取出来用就行了。
2017-07-13
已采纳回答 / 下线123
记事本里采用的是默认编码是ANSI<...图片...>,但是你项目中有很多编码方式,java默认的是utf-16be,你写汉字时使用的是writeUTF()这使用的是utf-8编码,你代码中也有注释的,所以编码方式不统一,自然会出现乱码
2017-07-13
已采纳回答 / qq_一人的征程_0
看API文档的解释,the total number of bytes read into the buffer, or -1 if there is
no more data because the end of the file has been reached.读到数据字节个数,如果没有读到数据时,返回-1
2017-07-11
最赞回答 / qq_一雨成秋_0
明白了。乱码才是正常的,因为序列化和反序列话是基于二进制流的,序列话便是把Student对象的信息以二进制存储在文件obj.bat中,用文本编辑器打开自然是乱码。只有通过反序列话才能将存储的二进制读取出来,然后显示在控制台上。
2017-07-10
最新回答 / 烈焰狂歌
我也是遇到了这个问题,我知道问题所在,但是现在还没有找到解决的方法,这个问题和前面有一节的是一样的,写入数字会有错误,会乱码,通过我的检测,这个数字写入文件会变成ASCII存储,你可以把数据改一下,对照ASCII码表,就会发现输入的数字是一一对应的。然而我还没有解决的办法。。。。
2017-07-08