码迷,mamicode.com
首页 > 其他好文 > 详细

使用DataOutputStream写入int类型数字不能显示

时间:2016-02-07 17:31:40      阅读:802      评论:0      收藏:0      [点我收藏+]

标签:

  前段时间做Android系统项目需要使用DataOutputStream数据流向文件里写入数据,写入的有String类型和int类型。写入之后在代码中使用DataInputStream读出是没有问题的,处于好奇心就把生成的文件导出来查看了一下。

  打开之后发现,生成的文件里有一堆乱码,除了一些String类型的数据,其他都是乱码。当时第一反应应该是编码格式的问题,应为DataOutputStream里有writeUTF之类的方法,相当于指定的编码格式,于是我就把打开格式切换成各种编码格式,utf8、ansi、gbk等等都尝试了,都不行,这是怎么回事??

  尝试过各种编码没有结果之后,我就从源码入手。由于问题都是出在int类型的数据上,于是就直接查看writeInt的方法。这一看才发现,原来int类型的数据是从内存中直接将二进制格式的文件写入文件了。回头再去用UE使用十六进制查看的方式查看生成的那个文件,真相大白。

 

    /**
     * Writes an <code>int</code> to the underlying output stream as four
     * bytes, high byte first. If no exception is thrown, the counter
     * <code>written</code> is incremented by <code>4</code>.
     *
     * @param      v   an <code>int</code> to be written.
     * @exception  IOException  if an I/O error occurs.
     * @see        java.io.FilterOutputStream#out
     */
    public final void writeInt(int v) throws IOException {
        out.write((v >>> 24) & 0xFF);
        out.write((v >>> 16) & 0xFF);
        out.write((v >>>  8) & 0xFF);
        out.write((v >>>  0) & 0xFF);
        incCount(4);
    }

使用DataOutputStream写入int类型数字不能显示

标签:

原文地址:http://www.cnblogs.com/hackerkevin/p/5184714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!