黑马程序员技术交流社区

标题: 请教:复制的文件比原文件大 [打印本页]

作者: 杜桂发    时间: 2012-3-28 10:05
标题: 请教:复制的文件比原文件大
自己用java写了一个复制的程序,用fileinputstream , fileoutputstream , 作为输入流和输出流,byte[]作为缓冲区,但复制出来的文件都比原文件大.一直没找出原因,求指点
作者: 刘基军    时间: 2012-3-28 10:10
建议贴上代码
作者: 鲍亚坤    时间: 2012-3-28 10:17
不同的文件系统簇大小不同,存入文件后,有的簇可能没有完全占满,但是剩余的空间不能使用,所以看到的占用空间会比文件实际大小大,如果文件刚好是簇大小的整数倍就不会出现这种现象
作者: 王国华    时间: 2012-3-28 16:12
上代码才能分析出来原因,我只遇到过比原文件小的状况。。
作者: 罗杰    时间: 2012-3-28 17:09
这问题我也遇到过
你是不是没有判断读取数据长度就把整个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的长度
作者: 杜桂发    时间: 2012-3-29 19:08
呵呵,楼上正解.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2