一开始的思路是在CheckedOutputStream中添加ObjectOutputStream
再把CheckedOutputStream给ZipOutputStream
最后用ObjectOutputStream进行序列化,但是里面写不了内容。
最后发现要先把ZipOutputStream给ObjectOutputStream 最后用ObjectOutputStream 实现序列化
下面是代码:
package Number_1802;
/**
*将一个序列化的对象添加到压缩文件
*要将ZipOutputStream 添加到 ObjectOutputStream 中
*不能是ObjectOutputStream添加到ZipOutputStream中,否则创建的文件写不了内容
*
*
*/
import java.io.*;
import java.util.zip.*;
class Ser implements Serializable {
String s;
public Ser(String ss) {
s = ss;
}
}
public class think {
public static void main(String[] args) throws IOException {
// ObjectOutputStream out1=new ObjectOutputStream(new
// FileOutputStream("F:/IOtest/b/<span style="font-family: Arial, Helvetica, sans-serif;">SerZip</span><span style="font-family: Arial, Helvetica, sans-serif;">.txt"));</span>
CheckedOutputStream c = new CheckedOutputStream(new FileOutputStream(
"F:/IOtest/b/SerZip.zip"), new Adler32());
ZipOutputStream zout = new ZipOutputStream(c);
// BufferedOutputStream out=new BufferedOutputStream(zout);
//写条目
zout.putNextEntry(new ZipEntry("ser2.txt"));
ObjectOutputStream out1 = new ObjectOutputStream(zout);
out1.writeObject(new Ser("aaaa"));
// out.flush();
// out.close();
zout.close();
out1.close();
}
//
}
此时压缩文件
SerZip.zip
里面的条目ser2.txt是有内容的 并且里面的内容实现的序列化