45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:怎么样解决压缩包中带文件路径的问题?

怎么样解决压缩包中带文件路径的问题?

2016-09-02 16:39:51 来源:www.45fan.com 【

怎么样解决压缩包中带文件路径的问题?

如果需要转载,请注明出处和作者。谢谢

QQ:221704

MSN:flyly@yeah.net

EMAIL:zhangfl@sports.cn

今天用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;

}

一些细节的地方平时没怎么注意.导致在这么简单的问题上耗费了时间.该打该打
 

本文地址:http://www.45fan.com/a/question/71387.html
Tags: 文件 解决 压缩
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部