为什么我在函数中向指定文件写入int a =10,运行后。目标文件没有显示10,但是调用printHex函数却可以看到打印出10

来源:4-3 字节流之文件输出流FileOutputStream

旗开得胜wds

2017-07-08 10:16

public static void main(String[] args) throws IOException {
        
        //如果文件不存在,则直接创建,存在则删除后创建
        FileOutputStream out = new FileOutputStream("F:\\java\\wds.txt");
        //这样写,则直接在文件后面添加输出的内容
        //FileOutputStream out = new FileOutputStream("F:\\java\\wds.txt",true);
        //向文件中写入'A'的低字节(后八位)
        out.write('A');
        //写入字符串,应将字符串转换成字符数组
        String s = "十几个ID死了";
        byte[] b = s.getBytes();
        System.out.println(b.length);
        for (byte c : b) 
        {                    
            out.write(c);
        }
        out.write(b);
        //写入整数
        int a = 10;
        for(int i =3;i>=0;i--)
        {
            out.write(a>>>i*8);
        }
        
        out.close();
        
        IOUtils.printHex("F:\\java\\wds.txt");
        
    }

12
65 202 174 188 184 184 246 73 68 203
192 193 203 202 174 188 184 184 246 73
68 203 192 193 203 00 00 00 010

写回答 关注

2回答

  • 烈焰狂歌
    2018-08-14 17:51:15

    我也是遇到了这个问题,我知道问题所在,但是现在还没有找到解决的方法,这个问题和前面有一节的是一样的,写入数字会有错误,会乱码,通过我的检测,这个数字写入文件会变成ASCII存储,你可以把数据改一下,对照ASCII码表,就会发现输入的数字是一一对应的。然而我还没有解决的办法。。。。

  • qq_猫的心_0
    2017-07-08 14:15:28

    16进制10应该是00 00 00 0a

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133769 学习 · 1030 问题

查看课程

相似问题