我用java在打包文件的时候,为什么zip文件中会多出来一个盘符文件夹???
比如我将d:\\a.txt d:\\b.txt打一个zip包 test.zip打包后我希望这两个文件直接在test.zip的根目录下结果test.zip的目录下有个d:目录,然后这个目录下才是文件为什么啊?package com.zip;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class MakeZip
{
public static void main(String[] fileList)
{
try
{
FileOutputStream f = new FileOutputStream("d:\\testm.zip");
// ZipOutputStream out = new ZipOutputStream(new
// DataOutputStream(f));
org.apache.tools.zip.ZipOutputStream out2 = new org.apache.tools.zip.ZipOutputStream(
f);
String[] files = new String[3];
files[0] = "D:\\CrawlerConfiguration.xml";
files[1] = "D:\\新建 Microsoft Word 文档.doc";
files[2] = "D:\\新建 Microsoft Word 文档.rar";
for (int i = 0; i < files.length; i++)
{
System.out.println("Writing file " + files[i]);
DataInputStream in = new DataInputStream(new FileInputStream(
files[i]));
out2.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i]));
int c;
while ((c = in.read()) != -1)
out2.write(c);
in.close();
}
out2.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
比如我将d:\\a.txt d:\\b.txt打一个zip包 test.zip打包后我希望这两个文件直接在test.zip的根目录下结果test.zip的目录下有个d:目录,然后这个目录下才是文件为什么啊?package com.zip;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class MakeZip
{
public static void main(String[] fileList)
{
try
{
FileOutputStream f = new FileOutputStream("d:\\testm.zip");
// ZipOutputStream out = new ZipOutputStream(new
// DataOutputStream(f));
org.apache.tools.zip.ZipOutputStream out2 = new org.apache.tools.zip.ZipOutputStream(
f);
String[] files = new String[3];
files[0] = "D:\\CrawlerConfiguration.xml";
files[1] = "D:\\新建 Microsoft Word 文档.doc";
files[2] = "D:\\新建 Microsoft Word 文档.rar";
for (int i = 0; i < files.length; i++)
{
System.out.println("Writing file " + files[i]);
DataInputStream in = new DataInputStream(new FileInputStream(
files[i]));
out2.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i]));
int c;
while ((c = in.read()) != -1)
out2.write(c);
in.close();
}
out2.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
解决方案 »
- java ldap 访问微软的域服务获取用户信息,为什么只能获取1000个?
- Struts2解决了什么问题?相对于JSP+SERVLET+JAVABEAN带来了什么好处?
- 将WebService函数调用集中化会不会降低效率?
- 怎么从数据库中取数据放入option里
- 请教Spring配置文件中hibernate.connection.autocommit的问题
- java在对数据库操作之后,立即查询不能查到记录,非要等一分中后才能查到记录,那位大哥遇到这样得情况,请指教!
- 试验struts实例时出现的问题,请教大家
- ◆◇mysql数据库和jsp页面之间编码转换问题!!高手进来总结归纳一下△▲
- 关于java的引用类型的一些疑问
- 关于synchronized锁机制的问题
- JDBC 在mysql获取外键问题~~
- HashMap问题
files[0] = "D:\\CrawlerConfiguration.xml";
files[1] = "D:\\新建 Microsoft Word 文档.doc";
files[2] = "D:\\新建 Microsoft Word 文档.rar";
这边应该有问题吧,你把D:\换掉试试
files[i]));
这一句,已经把文件作成输入流了。
所以下面:
out2.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i]));
这里指定的,是文件相对于目标zip文件根目录的一个结构。数据应该从in中获得。
你试试看,我觉得是这样。如果不行的话,换成;
out2.putNextEntry(new org.apache.tools.zip.ZipEntry(new File("/CrawlerConfiguration.xml")));