I wrote a program for file splitting and joining. When I break the file into small pieces I found that the size of smaller file is not equal to the original one, there is loss of approximately 30-50 bytes of data. and the combined file doesn't run correctly

e.g. a file **ABC** has been broken into 2 parts, **ABC1** and **ABC2** but the problem is
`sizeof(ABC)` is **not equal to** `sizeof(ABC1)` + `sizeof(ABC2)`. By `sizeof(ABC)` I mean from Windows's perspective, i.e. from the Windows property dialog box.

My code is:

```
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;
       }
}

```