我写了一个文件分割和加入的程序。当我将文件分成小块时,我发现较小文件的大小不等于原始文件的大小,丢失了大约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;
}
}
答案 0 :(得分:2)
关闭输出流怎么样?它将刷新缓冲区并释放您使用的文件描述符。致电bouts.close()
。
答案 1 :(得分:1)
创建文件时,它是以内存块而不是单个字节创建的。因此,当您将文件分成两部分时,它们都具有固定块的大小,这可能超过您的实际写入数据大小。