黑马程序员技术交流社区
标题:
io 中合并图片的时候 文件 对拷出现了死循环 求指导
[打印本页]
作者:
丁乐
时间:
2012-6-27 11:03
标题:
io 中合并图片的时候 文件 对拷出现了死循环 求指导
如题 出现了这个问题 求大侠指点 !!!
package cn.itcast.File.dl;
import java.io.File;
public class mergeFile3 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File[] files=new File("e:\\a\\a").listFiles();
Set<InputStream> inputStream = new TreeSet<InputStream>(new myComparator());
for(File file : files){
inputStream.add(new FileInputStream(file.getAbsolutePath()));
System.out.println(file.getAbsolutePath());
}
final Iterator<InputStream> iterator = inputStream.iterator();
InputStream in = new SequenceInputStream(new Enumeration<InputStream>() {
@Override
public boolean hasMoreElements() {
// TODO Auto-generated method stub
return iterator.hasNext();
}
@Override
public InputStream nextElement() {
// TODO Auto-generated method stub
return iterator.next();
}
});
OutputStream out = new FileOutputStream("e:\\a\\newA.jpg");
byte[] buffer = new byte[1024];
int len;
while((len=in.read(buffer))!=-1){
out.write(buffer, 0, len);
}
in.close();
out.close();
}
}
class myComparator implements Comparator<InputStream>{
@Override
public int compare(InputStream o1, InputStream o2) {
// TODO Auto-generated method stub
return 0;
}
}
复制代码
作者:
韦念欣
时间:
2012-6-27 15:01
本帖最后由 韦念欣 于 2012-6-27 15:40 编辑
楼主一个把TreeSet改成ArrayList试试。
package cn.itcast.File.dl;
import java.io.File;
public class mergeFile3 {
public static void main(String[] args) throws IOException {
File[] files=new File("e:\\a\\a").listFiles();
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
for(File file : files){
al.add(new FileInputStream(file.getAbsolutePath()));
System.out.println(file.getAbsolutePath());
}
final Iterator<FileInputStream> iterator = al.iterator();
SequenceInputStream sis = new SequenceInputStream(new Enumeration<FileInputStream>() {
public boolean hasMoreElements() {
return iterator.hasNext();
}
public FileInputStream nextElement() {
return iterator.next();
}
});
FileOutputStream out = new FileOutputStream("e:\\a\\newA.jpg");
byte[] buffer = new byte[1024];
int len;
while((len=sis.read(buffer))!= -1){
out.write(buffer, 0, len);
}
sis.close();
out.close();
}
}
复制代码
作者:
丁乐
时间:
2012-6-27 23:45
韦念欣 发表于 2012-6-27 15:01
楼主一个把TreeSet改成ArrayList试试。
这个可以解决文件夹内少于十个的情况 当多于十个就会失败
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2