AdultBird 2015-09-04 07:53 采纳率: 77.8%
浏览 1484
已采纳

java求哪位大神帮看看,分割可以,粘合不行!

import java.util.*;
import java.io.*;
class SplitDemo
{
public static void main(String[] args) throws IOException
{
//File file=new File("D:\我想念你.mp3");
File dir=new File("D:\splitfiles");
//String storeDir=dir.toString();
//splitFile(file);
bondFile(dir);
}
public static void splitFile(File file)throws IOException{//文件切割
FileInputStream fis=new FileInputStream(file);//创建读取流对象与被切割文件关联
FileOutputStream fos=null;
byte[] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1){
//每读取1024KB源文件,则用输出流存储1024KB文件到指定目录下,然后输出流
fos=new FileOutputStream("D:\splitfiles\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();

    }
}
public static void bondFile(File dir)throws IOException{//将指定目录文件内的同类型文件进行粘合,再将粘合后的文件存回
    Vector<FileInputStream> v=new Vector<FileInputStream>();//创建Vector集合对象v,用来存储文件输入流对象
    File[] files=dir.listFiles();
    for(File file:files){//遍历目录文件,将符合条件的文件与流关联,并存储到Vector集合中
        if(file.getName().endsWith(".part"));
            v.add(new FileInputStream(file));
    }
    Enumeration<FileInputStream> en=v.elements();
    SequenceInputStream sis=new SequenceInputStream(en);
    FileOutputStream fos=new FileOutputStream(dir);
    byte[] buf=new byte[1024*1024];
    int len=0;
    while((len=sis.read(buf))!=-1){
        fos.write(buf,0,len);
    }
    fos.close();
    sis.close();


}

}

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-09-04 07:55
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?