可不可以将ZIP文件当成文件夹一样,直接在里面生成txt文件,就是说不经过中间文件直接将程序生成的文本文件做成ZIP文件.

解决方案 »

  1.   

    这好像不行吧,java对zip文件的操作好像只能是按照一个文件流的方式,不能直接对zip文件进行修改,这可能与zip文件的格式有关。
      

  2.   

    以前写的一个测试,不知道对你有用吗,没有很看懂你的问题什么意思
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.StringReader;
    import java.util.zip.Adler32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;public class ZipCompress { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[] files = {"111.txt", "222.txt", "333.txt"};
    String[] test = {"aaaaaaaa", "bbbbbbbb", "cccccccc"};
    try {
    FileOutputStream f = new FileOutputStream("C://test.zip");
    CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
    ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum));
    // out.setComment("A test of Java Zipping");
    // Can't read the above comment, though
    for (int i = 0; i < files.length; i++) {
    System.out.println("Writing file " + files[i]);
    // BufferedReader in = new BufferedReader(new FileReader(files[i]));
    BufferedReader in = new BufferedReader(new StringReader(test[i]));
    out.putNextEntry(new ZipEntry(files[i]));
    int c;
    while ((c = in.read()) != -1)
    out.write(c);
    in.close();
    }
    out.close();
    } catch (Exception e){
    e.printStackTrace();
    }
    }}
      

  3.   

    你是希望压缩文件还向文件夹一样使用还是打开这个压缩文件就可以直接运行那个可执行文件?   winxp下压缩文件本身就可以当作普通文件夹使用。打开后在列表里直接双击可执行文件就好了,如果是打开压缩文件自动运行exe文件,那用以下方法:用winrar压缩时,选择创建自解压格式压缩文件。高级选项--高级自解压选项---解压后运行---把解压后完整路径添上ok了。 
      

  4.   

    简单的应该可以的。
    也就是说,直接将txt文件数据转换成zip文件的数据流,写入文件。
    装饰器模式实现文件IO流的ZIP压缩解压(一)