分割,合并文件

//拆分文件
    public static void splitFile(File file,int size) throws Exception...{
        if(size<=0)...{
            size = 1024;
        }
        if(!file.isFile())...{
            throw new Exception("file not exists"+file.getAbsolutePath());
        }
        String filename = file.getAbsolutePath();
        File filetmp = new File(filename+"_"+0+".vk");
        if(filetmp.isFile())...{
            throw new Exception("file exists"+filetmp.getAbsolutePath());
        }
       
        byte[] buf = new byte[1024*10];
        FileInputStream fis = new FileInputStream(file);
        int readsize = 0;
        int pos = 0;
        int k = 0;
        int m = -1;
        File fileout = null;
        FileOutputStream fos = null;
        while((readsize = fis.read(buf, 0, buf.length))>0)...{
           
            if(k!=m)
            ...{
                if(fos!=null)...{
                    fos.close();
                    fos = null;
                }
                m = k;
                fileout = new File(filename+"_"+k+".vk");
                fos = new FileOutputStream(fileout);
            }
            fos.write(buf,0,readsize);
            fos.flush();
            pos += readsize;
            if(pos>size*(k+1))...{
                k++;
            }
        }
        if(fos!=null)...{
            fos.close();
            fos = null;
        }
        fis.close();
    }
   
   
    //合并文件
    public static void combination(File file) throws Exception...{
        String filename = file.getAbsolutePath();
        File fileout = new File(filename);
       
        if(fileout.isFile())...{
            throw new Exception("file exists"+fileout.getAbsolutePath());
        }
        FileOutputStream fos = new FileOutputStream(fileout);
        int k = 0;
        File filein = null;
        FileInputStream fis = null;
        byte[] buf = new byte[1024*10];
        while(true)...{
            if(fis!=null)...{
                fis.close();
                fis = null;
            }
            filein = new File(filename+"_"+k+".vk");
            if(!filein.isFile())...{
                break;
            }
            fis = new FileInputStream(filein);
            int readsize = 0;
            while((readsize = fis.read(buf, 0, buf.length))>0)...{
                fos.write(buf,0,readsize);
                fos.flush();
            }
            k++;
        }
        if(fis!=null)...{
            fis.close();
            fis = null;
        }
        fos.close();
    }

你可能感兴趣的:(java)