クラスをファイルに書き込んで、ファイルからクラスを開こうとしています。これは私にとってはうまくいきます。ただし、ファイル サイズが非常に大きくなります。(65 MB、.rar で圧縮すると 1 MB になります)。
これにより、ファイルに書き込む前にデータを圧縮できると考える理由が得られました。
私の元の機能は次のとおりです。
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;
}
圧縮するには、次のことを試しましたが、システムクラスにロードするときに正しく機能しないようです:
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 を間違って使用していますか? これを機能させるにはどうすればよいですか?