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条)

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗