我用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();
}
}
}
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")));