我正在实现一个加密解密应用程序。因为我正在使用哈希表来存储带有提示的加密值。虽然解密我需要获取哈希表值。但在这里我只得到一个密钥及其hash表中的值.allMessage()用于存储hashtable到file,getMessage()用于retriving.can任何人都可以帮我找到合适的解决方案。
提前致谢
用于将哈希表存储到文件
public boolean storeMessage(byte[] bt,String hint){
boolean status=false;
byte[][] valuePair=null;
java.util.Set<String> set=null;
java.util.Iterator<String> itr=null;
ObjectOutputStream objOut=null;
try {
System.out.println("jhkj:"+ht);
if(ht==null)
ht=new Hashtable<String, byte[]>();
ht.put(hint, bt);
keyPair=new String[ht.size()];
valuePair=new byte[keyPair.length][1];
set=ht.keySet();
itr=set.iterator();
int i=0;
while(itr.hasNext()){
keyPair[i]=itr.next();
valuePair[i]=ht.get(keyPair[i]);
i++;
}
if(!new java.io.File("store.db").exists())
new java.io.File(path+ "/store.db").createNewFile();
objOut=new ObjectOutputStream(new FileOutputStream(path+ "/store.db",true));
objOut.writeObject(keyPair);
objOut.writeObject(valuePair);
objOut.close();
status=true;
} catch (Exception e)
{
}
finally{
}
return status;
}
从文件中获取哈希表
java.util.Hashtable<String, byte[]> getMessage(){
byte[][] valuePair=null;
ObjectInputStream objIn=null;
ht=new Hashtable<String, byte[]>();
try{
objIn=new ObjectInputStream(new FileInputStream(con.getFilesDir().getParentFile().getPath()+ "/store.db"));
keyPair=(String[]) objIn.readObject();
valuePair=(byte[][]) objIn.readObject();
int i=0;
while(i<keyPair.length){
ht.put(keyPair[i], valuePair[i]);
i++;
}
}
catch(FileNotFoundException ex)
{
ht=new Hashtable<String, byte[]>();
}
catch (Exception e)
{
System.out.println(">>>>>>"+e);
}
finally{
try {
objIn.close();
} catch (Exception e)
{
}
}
System.out.println("hash table:"+ht);
return ht;
}
答案 0 :(得分:1)
每次存储哈希表时,首先应该获取当前存储的表,然后在存储之前为其添加新条目。
例如:
public boolean storeMessage(byte[] bt,String hint){
boolean status=false;
byte[][] valuePair=null;
java.util.Set<String> set=null;
java.util.Iterator<String> itr=null;
ObjectOutputStream objOut=null;
try {
System.out.println("jhkj:"+ht);
ht=getMessage();//<--Here you are trying to get current hashtable
if(ht==null)
ht=new Hashtable<String, byte[]>();
ht.put(hint, bt);
keyPair=new String[ht.size()];
valuePair=new byte[keyPair.length][1];
set=ht.keySet();
itr=set.iterator();
int i=0;
while(itr.hasNext()){
keyPair[i]=itr.next();
valuePair[i]=ht.get(keyPair[i]);
i++;
}
if(!new java.io.File("store.db").exists())
new java.io.File(path+ "/store.db").createNewFile();
objOut=new ObjectOutputStream(new FileOutputStream(path+ "/store.db",true));
objOut.writeObject(keyPair);
objOut.writeObject(valuePair);
objOut.close();
status=true;
} catch (Exception e)
{
}
finally{
}
return status;
}