喵太狼
2018-08-02 03:45
采纳率: 100%
浏览 1.7k
已采纳

java outputStream 同一数据每次写入的文件大小不一样

如题,固定大小固定内容的一组byte[]。
每次写完数据执行flush,所有数据写完后立即close。
但是!!!!
查看生成的文件,其大小是随机的!!!!
有时是0kb,有时是几kb。
我都要疯了。。。就四行有效代码的事。。。
网上找不到类似我这种情况的。
我想知道可能的问题出在哪里。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • _zming 2018-08-02 04:45
    已采纳

    FileOutputStream(File file, boolean append)第二个属性代表类内容是追加到文件还是重新生成。你可能设这个参数有问题,有么就是你代码写的有问题,没有第三种可能,除非贴代码

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 诚哥丿 2018-08-02 05:44

    写完output文件之后, 另写一个方法用inputstream读一下这个文件的长度。
    碰到这种, 有可能是windows显示的文件大小不准确,你可以通过循环把内容写多一点。

    评论
    解决 无用
    打赏 举报
  • 方大锤 2018-08-02 06:08

    楼上说的不错,这时候有两个可能:
    1.写入数据的时候,注意数据是否是覆盖原来的文件还是在末尾添加数据FileOutputStream(File file, boolean append)第二个属性代表类内容是追加到文件还是重新生成。
    2.文件的长度的问题,最好不要用windows资源管理器看文件的大小,自己写代码以二进制的方式读取文件后打印字节长度,这是最准确的。

    可以试试这两个方法

    评论
    解决 无用
    打赏 举报
  • threenewbee 2018-08-02 16:02

    多线程没有同步
    追加文件而不是创建
    缓冲区大小不对,或者长度并非固定(调试下)
    有别的软件在读写(病毒、杀毒软件等)
    系统中多个路径有重名的文件,你看到的和你写的不是一个文件

    评论
    解决 无用
    打赏 举报
  • ail6413 2018-08-15 02:48

    很有可能就是你写入的未完成 你就停止写入了,

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题