0
私はCipherOutputStreamを使用して暗号化されたファイルを記述しようとしています、CipherOutputStreamは、シリアル化のために0バイトのファイル
PFBコードを作成
public class SerializeDemo implements Serializable{
private static final long serialVersionUID = -7128734972070518012L;
private static SerializeDemo INSTANCE = null;
private ArrayList <SerializeItem> item;
public static void serialize() {
INSTANCE = new SerializeDemo();
ArrayList <SerializeItem> list = new ArrayList <SerializeItem>();
SerializeItem item = new SerializeItem();
item.setV1("DD");
item.setV2("D");
list.add(item);
INSTANCE.setItem(list);
try {
Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
c.init(Cipher.ENCRYPT_MODE, getKeyPair().getPublic());
CipherOutputStream cos = new CipherOutputStream(new FileOutputStream("D:\\abc"), c);
ObjectOutputStream os = new ObjectOutputStream(cos);
os.writeObject(INSTANCE);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Serialized");
}
}
PFB私SerializeItemクラス定義
public class SerializeItem implements Serializable{
private static final long serialVersionUID = 850426811900126363L;
private String V1 = null;
private String V2 = null;
//getter setters for the bean file
}
私が追加した場合このクラスの直列化における2つ以上のStringメンバー変数が停止し、0バイトのファイルが取得されています。助けて
オブジェクトが記述されていなくても、実際には例外がなければ 'CipherOutputStream'がなくても、このコードでゼロ長のファイルを取得することはできません。それが何だった?静的な 'INSTANCE'のポイントが私を逃げる。 – EJP
コードの実行中にエラーはありません.2フィールドだけを指定すると、ゼロ以外の長さのファイルが取得されます。スタティックインスタンスはシングルトンパターンの実装用です –
投稿したコードには2つのフィールドしかありません。私たちは非稼働バージョンを掲載していないことを理解していますか? – EJP