文件分裂丢失数据

时间:2012-03-17 12:40:39

标签: java file-io

我写了一个文件分割和加入的程序。当我将文件分成小块时,我发现较小文件的大小不等于原始文件的大小,丢失了大约30-50字节的数据。并且合并的文件无法正常运行

e.g。文件 ABC 已分为两部分, ABC1 ABC2 ,但问题是 sizeof(ABC) 不等于 sizeof(ABC1) + sizeof(ABC2)。到sizeof(ABC)我的意思是从Windows的角度来看,即从Windows属性对话框。

我的代码是:

for(int i =0;i<no_of_parts;i++)
{
       copied_data = 0;// a variable that count the no of byte transferred in the part of file
       fos = new FileOutputStream(jTextField2.getText()+"\\".part"+i);
       bouts = new BufferedOutputStream(fos);
       while((b = bins.read())!= -1)
       {
             bouts.write(b);
             copied_data++;
             if(copied_data==each_part_size_in_byte)
                break;
       }
}

2 个答案:

答案 0 :(得分:2)

关闭输出流怎么样?它将刷新缓冲区并释放您使用的文件描述符。致电bouts.close()

答案 1 :(得分:1)

创建文件时,它是以内存块而不是单个字节创建的。因此,当您将文件分成两部分时,它们都具有固定块的大小,这可能超过您的实际写入数据大小。