我正在尝试将一个类写入文件并从文件中打开该类。这适合我;但是,文件大小非常大。 (65 MB,以.rar压缩为1MB)。
这让我有理由认为我可以在写入文件之前压缩数据。
我原来的功能是;
public static void save(System system, String filePath){
FileStream fs = new FileStream(filePath, FileMode.Create);
try{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, system);
fs.Flush();
}catch(Exception e){
}finally{
fs.Close();
}
}
public static System load(String filePath){
System system = new System();
FileStream fs = new FileStream(filePath, FileMode.Open);
try{
BinaryFormatter bf = new BinaryFormatter();
system = (System)bf.Deserialize(fs);
fs.Flush();
}catch(Exception e){
}finally{
fs.Close();
}
return system;
}
压缩I尝试以下操作,但是在加载到系统类时这似乎无法正常工作:
public static void save(System system, String filePath){
FileStream fs = new FileStream(filePath, FileMode.Create);
try{
BinaryFormatter bf = new BinaryFormatter();
DeflateStream cs = new DeflateStream(fs, CompressionMode.Compress);
bf.Serialize(cs, system);
fs.Flush();
}catch(Exception e){
}finally{
fs.Close();
}
}
public static System load(String filePath){
System system = new System();
FileStream fs = new FileStream(filePath, FileMode.Open);
try{
BinaryFormatter bf = new BinaryFormatter();
DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress);
system = (System)bf.Deserialize(ds);
fs.Flush();
}catch(Exception e){
}finally{
fs.Close();
}
return system;
}
我是否正确使用DeflateStream?我能做些什么才能做到这一点?
答案 0 :(得分:1)
我认为您在DeflateStream
方法中使用了save()
错误。您必须将其包装在using()
中或明确调用Close()
才能完成其工作。