public void save(File file) throws Exception {
   int idx = 0;
   int size = pCaches.size();
   if (size == 0) {
     return;
   }
   synchronized (pCaches) {
     StringBuilder sbr = new StringBuilder();
     WalletSeed seed = new WalletSeed(LSystem.getAppPassword());
     for (int i = 0; i < size; i++) {
       WalletItem item = (WalletItem) pCaches.getEntry(i).getValue();
       if (!item.isOnline()) {
         RPAddress address = new RPAddress(item.getPublicKey(), item.getPrivateKey());
         sbr.append(item.getDate());
         sbr.append(',');
         sbr.append(address.getPublic());
         sbr.append(',');
         sbr.append(address.getPrivate());
         sbr.append(',');
         sbr.append(item.getAmount());
         sbr.append(',');
         sbr.append(item.getStatus());
         idx++;
         if (idx < size) {
           sbr.append(LSystem.LS);
         }
       }
     }
     seed.save(file, sbr.toString());
   }
 }
 public String load(File file) throws Exception {
   synchronized (pCaches) {
     WalletSeed seed = new WalletSeed(LSystem.getAppPassword());
     String text = seed.load(file);
     StringTokenizer tokenizer = new StringTokenizer(text, LSystem.LS);
     String result = null;
     BigDecimal count = new BigDecimal("0");
     for (; tokenizer.hasMoreElements(); ) {
       result = tokenizer.nextToken();
       if (result != null && result.length() > 0) {
         String[] split = result.split(",");
         if (split.length > 4) {
           String date = split[0];
           String pubKey = split[1];
           String priKey = split[2];
           String amount = split[3];
           String status = split[4];
           RPAddress address = new RPAddress(pubKey, priKey);
           pubKey = new String(address.getPublic());
           priKey = new String(address.getPrivate());
           String key = pubKey.concat(priKey);
           if (!pCaches.containsKey(key)) {
             WalletItem walletItem = new WalletItem(date, priKey, amount, status);
             if (MathUtils.isNan(amount)) {
               count = count.add(new BigDecimal(amount));
             }
             pCaches.put(key, walletItem);
           }
         }
       }
       int res = count.intValue();
       if (res > 0) {
         amounts = String.valueOf(res);
       }
     }
     return text;
   }
 }