浏览 1852 次
锁定老帖子 主题:JAVA IO的合并和分隔流
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-26
最后修改:2012-04-26
package com.io.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; /** * @类功能说明: 将一个MP3文件切割成1M大小的多等分,然后在合并一起 * @类修改者: * @修改日期: * @修改说明: * @作者:matieli * @创建时间:Apr 25, 2012 9:28:40 PM * @版本:V1.0 * */ public class SplitFile { public static void main(String[] args) throws IOException { // splitMp3(); SequenceMp3(); } /** * @方法功能说明: * @修改者名字:matieli * @修改时间:Apr 25, 2012 9:48:37 PM * @修改内容: * @参数:@throws IOException * @return:void * @throws */ public static void SequenceMp3() throws IOException { // 切割完成后,在合并流 File f = new File("splitfiles"); File[] fs = f.listFiles();// 获得文件的长度 ArrayList<FileInputStream> list = new ArrayList<FileInputStream>(); for (int i = 0; i < fs.length; i++) { list.add(new FileInputStream(fs[i]));// 遍历文件对象数组 } final Iterator<FileInputStream> it = list.iterator(); // 使用匿名内部类,创建枚举 Enumeration<FileInputStream> en = new Enumeration<FileInputStream>() { public boolean hasMoreElements() { return it.hasNext(); } public FileInputStream nextElement() { return it.next(); } }; // 创建合并流 SequenceInputStream sis = new SequenceInputStream(en); // 指定合并流输出到哪里 FileOutputStream fos = new FileOutputStream("splitfiles//2.mp3"); byte[] b = new byte[1024 * 1024]; int len = 0; while ((len = sis.read(b)) != -1) { fos.write(b, 0, len); fos.flush(); } fos.close(); sis.close(); } /** * @方法功能说明:把目标文件切成1M大小的不等份,最后一个剩下多少就放多少 * @修改者名字:matieli * @修改时间:Apr 25, 2012 9:47:42 PM * @修改内容: * @参数:@throws IOException * @return:void * @throws */ public static void splitMp3() throws IOException { FileInputStream fis = new FileInputStream("1.mp3"); FileOutputStream fos = null; byte[] b = new byte[1024 * 1024];// 定义一个1M大小的数组 int len = 0; int count = 0; while ((len = fis.read(b)) != -1) { fos = new FileOutputStream("splitfiles//" + (count++) + ".part"); fos.write(b, 0, len); fos.close(); } fis.close(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |