A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题   出现了这个问题   求大侠指点 !!!
  1. package cn.itcast.File.dl;

  2. import java.io.File;

  3. public class mergeFile3 {

  4.        

  5.         /**
  6.          * @param args
  7.          * @throws IOException
  8.          */
  9.         public static void main(String[] args) throws IOException {
  10.                 // TODO Auto-generated method stub
  11.                 File[] files=new File("e:\\a\\a").listFiles();
  12.                
  13.                 Set<InputStream> inputStream = new TreeSet<InputStream>(new myComparator());
  14.                
  15.                
  16.                 for(File file : files){
  17.                         inputStream.add(new FileInputStream(file.getAbsolutePath()));
  18.                         System.out.println(file.getAbsolutePath());
  19.                 }
  20.                
  21.                
  22.                
  23.                 final Iterator<InputStream> iterator = inputStream.iterator();
  24.                 InputStream  in = new SequenceInputStream(new Enumeration<InputStream>() {

  25.                         @Override
  26.                         public boolean hasMoreElements() {
  27.                                 // TODO Auto-generated method stub
  28.                                 return iterator.hasNext();
  29.                         }

  30.                         @Override
  31.                         public InputStream nextElement() {
  32.                                 // TODO Auto-generated method stub
  33.                                 return iterator.next();
  34.                         }
  35.                 });
  36.                
  37.                 OutputStream out = new FileOutputStream("e:\\a\\newA.jpg");
  38.                
  39.                
  40.                 byte[] buffer = new byte[1024];
  41.                 int len;
  42.                 while((len=in.read(buffer))!=-1){                       
  43.                         out.write(buffer, 0, len);
  44.                 }
  45.                 in.close();
  46.                 out.close();
  47.                
  48.         }

  49. }
  50. class myComparator implements Comparator<InputStream>{

  51.        
  52.        

  53.         @Override
  54.         public int compare(InputStream o1, InputStream o2) {
  55.                 // TODO Auto-generated method stub
  56.                 return 0;
  57.         }
  58.        
  59. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 韦念欣 于 2012-6-27 15:40 编辑

楼主一个把TreeSet改成ArrayList试试。
  1. package cn.itcast.File.dl;
  2. import java.io.File;

  3. public class mergeFile3 {

  4.         public static void main(String[] args) throws IOException {

  5.                         File[] files=new File("e:\\a\\a").listFiles();
  6.                        
  7.                         ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
  8.                        
  9.                         for(File file : files){
  10.                                         al.add(new FileInputStream(file.getAbsolutePath()));
  11.                                         System.out.println(file.getAbsolutePath());
  12.                         }
  13.                        
  14.                         final Iterator<FileInputStream> iterator = al.iterator();
  15.                         SequenceInputStream sis = new SequenceInputStream(new Enumeration<FileInputStream>() {

  16.                                         public boolean hasMoreElements() {
  17.                                                         return iterator.hasNext();
  18.                                         }

  19.                                         public FileInputStream nextElement() {
  20.                                                         return iterator.next();
  21.                                         }
  22.                         });
  23.                        
  24.                         FileOutputStream out = new FileOutputStream("e:\\a\\newA.jpg");
  25.                        
  26.                         byte[] buffer = new byte[1024];
  27.                         int len;
  28.                         while((len=sis.read(buffer))!= -1){                        
  29.                                         out.write(buffer, 0, len);
  30.                         }
  31.                         sis.close();
  32.                         out.close();
  33.         }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
韦念欣 发表于 2012-6-27 15:01
楼主一个把TreeSet改成ArrayList试试。

这个可以解决文件夹内少于十个的情况  当多于十个就会失败
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马