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

解决方案 »

  1.   

                String[] files = new String[3];
                files[0] = "D:\\CrawlerConfiguration.xml";
                files[1] = "D:\\新建 Microsoft Word 文档.doc";
                files[2] = "D:\\新建 Microsoft Word 文档.rar";
    这边应该有问题吧,你把D:\换掉试试
      

  2.   

    out2.putNextEntry(new org.apache.tools.zip.ZipEntry(new File(files[i].getName())));
      

  3.   

     DataInputStream in = new DataInputStream(new FileInputStream(
                            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")));