| 
         
     
     | 
     | 
    
  
    | 
    解决压缩包中带文件路径的问题 | 
   
  
     | 
   
  
     | 
   
  
    | 
     作者:未知  来源:月光软件站  加入时间:2005-2-28 月光软件站  | 
   
  
    今天用java.util.zip做文件压缩.写完程序后发现压缩包里带进了原文件的所有路径目录 /**    * 生成zip文件    * 返回zip文件地址    * @param imgids String[]    * @return String    */   public String createZip(String[] imgids){     String[] filenames=getPath(imgids);//根据图片id返回路径     Date date=new Date();     byte[] buf=new byte[1024];     String outFilename=zippath+String.valueOf(date.getTime())+".zip";     try {       ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));       for(int i=0;i<filenames.length;i++){         FileInputStream in=new FileInputStream(filenames[i]);         ZipEntry zipEntity=new ZipEntry(filenames[i]); //添加文件到压缩实体里         out.putNextEntry(zipEntity);         int len;         while((len=in.read(buf))>0){           out.write(buf,0,len);         }         out.closeEntry();         in.close();       }       out.close();     }     catch (IOException ex) {       ex.printStackTrace();     }     return outFilename;   }
  其实问题出现在 ZipEntry zipEntity=new ZipEntry(filenames[i]); 我println这个filename[i]后发现这里是带了全路径的一个文件名. 解决方法   public String createZip(String[] imgids){     String[] filenames=getPath(imgids);     Date date=new Date();     byte[] buf=new byte[1024];     String outFilename=zippath+String.valueOf(date.getTime())+".zip";     try {       ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));       for(int i=0;i<filenames.length;i++){         FileInputStream in=new FileInputStream(filenames[i]);         File file=new File(filenames[i]);         String filename=file.getName();//取得图片文件名         ZipEntry zipEntity=new ZipEntry(filename);//这里改成文件名就可以了         out.putNextEntry(zipEntity);         int len;         while((len=in.read(buf))>0){           out.write(buf,0,len);         }         out.closeEntry();         in.close();       }       out.close();     }     catch (IOException ex) {       ex.printStackTrace();     }     return outFilename;   }
  一些细节的地方平时没怎么注意.导致在这么简单的问题上耗费了时间.该打该打 
 
  | 
   
  
     | 
   
  
     相关文章:相关软件:  | 
   
   
      |