A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜桂发 黑马帝   /  2012-3-28 10:05  /  2609 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

自己用java写了一个复制的程序,用fileinputstream , fileoutputstream , 作为输入流和输出流,byte[]作为缓冲区,但复制出来的文件都比原文件大.一直没找出原因,求指点

5 个回复

倒序浏览
建议贴上代码
回复 使用道具 举报
不同的文件系统簇大小不同,存入文件后,有的簇可能没有完全占满,但是剩余的空间不能使用,所以看到的占用空间会比文件实际大小大,如果文件刚好是簇大小的整数倍就不会出现这种现象
回复 使用道具 举报
上代码才能分析出来原因,我只遇到过比原文件小的状况。。
回复 使用道具 举报
这问题我也遇到过
你是不是没有判断读取数据长度就把整个byte[]都写到文件中了,这样在最后一次循环会写入多余的数据
没有你的代码,拿读取文件举例吧
  1. FileInputStream fis = new FileInputStream("xxx.txt")
  2. byte[] buf = new byte[1024]
  3. int len = 0
  4. while((len = fis.read(buf)) != -1)
  5. {
  6. syso(new String(buf,0,len));
  7. }
复制代码
其中String(buf,0,len)
每次读取数据后要根据len规定String的长度
回复 使用道具 举报
呵呵,楼上正解.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马