黑马程序员技术交流社区
标题:
匿名内部类实现的Enumration接口改写为外部类实现
[打印本页]
作者:
黑马刘涛
时间:
2012-7-19 16:16
标题:
匿名内部类实现的Enumration接口改写为外部类实现
package com.itcast.test;
import java.io.*;
import java.util.*;
public class SplitFile {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//splitFile();
merge();
}
public static void merge()throws IOException {
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(int x=1; x<=6; x++) {
al.add(new FileInputStream("C:\\Users\\shandawang\\Desktop\\"+x+".part"));
}
Iterator<FileInputStream> it = al.iterator();
Enumeration<FileInputStream> en = new MyEnumeration<FileInputStream>(it);
/*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("C:\\Users\\shandawang\\Desktop\\大地_副本.mp3");
byte[] buf = new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1) {
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
public static void splitFile() throws IOException {
FileInputStream fis = new FileInputStream("C:\\Users\\shandawang\\Desktop\\beyond - 大地.mp3");
FileOutputStream fos = null;
byte[] buf = new byte[1024*1024];
int len = 0;
int count = 1;
while((len=fis.read(buf))!=-1){
fos = new FileOutputStream("C:\\Users\\shandawang\\Desktop\\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
class MyEnumeration<E> implements Enumeration<E>{
private Iterator<E> i;
public MyEnumeration(Iterator<E> i) {
this.i = i;
}
@Override
public boolean hasMoreElements() {
// TODO Auto-generated method stub
return i.hasNext();
}
@Override
public E nextElement() {
// TODO Auto-generated method stub
return i.next();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2