Properties的store()方法和load()方法 示例

本文介绍了一个使用Java的Properties类实现的简单电话簿程序。该程序能够加载和保存电话簿数据到文件,支持添加新联系人及通过姓名查询电话号码。

/*

Properties的一个最有用的方面是可以利用store()方法和load()方法方便地对包含在属性(Properties)对象中的信息进行存储或从盘中装入信息。任何时候都可以将一个属性对象写入流或从中将其读出,这使得属性列表特别方便的实现简单的数据库。

下面的程序使用属性列表创建了一个简单的存储姓名和号码的电话本。为了寻找某人的电话号码,可输入名字进行查询。程序使用store()和load()方法来存储和检索列表。当程序执行时,首先从一个叫phonebook.dat的文件中装入列表,如果这个文件存在,列表就被装入,然后就可以增加列表,如果这个文件不存在则创建之。

*/

/*
A simple telephone number database that uses a property list.
*/
import java.io.*;
import java.util.*;
class PhoneBook{
 public static void main(String[] args) throws IOException{
  Properties ht = new Properties();
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String strName,strNumber;
  FileInputStream fin = null;
  boolean changed = false;

  //Try to open phonebook.dat file.
  try{
   fin = new FileInputStream("phonebook.dat");
  }catch(FileNotFoundException e){
   //ignore missing file
  }

  /* If phonebook file already exists,load exsiting
   telephone numbers.
  */
  try{
   if(fin!=null){
    ht.load(fin);
    fin.close();
   }
  }catch(IOException e){
   System.out.println("Error reading file!");
  }

  //Let user enter new names and numbers.
  do{
   System.out.println("Enter new name" +
          " ('quit' to stop): ");
   strName = br.readLine();
   if(strName.equals("quit")) continue;

   System.out.println("Enter number:");
   strNumber = br.readLine();

   ht.put(strName,strNumber);
   changed = true;
  }while(!strName.equals("quit"));

  //If phonebook data has changed,save it.
  if(changed){
   FileOutputStream fOut = new FileOutputStream("phonebook.dat");
   ht.store(fOut,"Telephone Book");
   fOut.close();
  }

  //Look up numbers given a name.
  do{
   System.out.println("Enter name to find ('quit' to stop): ");
   strName = br.readLine();
   if(strName.equals("quit")) continue;
   strNumber = (String)ht.get(strName);
   System.out.println(strNumber);
  }while(!strName.equals("quit"));
 }
}

在不同的技术场景下,loadstore有着不同的含义区别: - **ext中store.loadstore.reload**:load( Object options ) 采用配置好的Reader格式去加载Record缓存,具体请求的任务由配置好的Proxy对象完成,可重新提交新的参数请求数据;reload( Object options ) 依据上一次的load操作的参数的Reader制订的格式,再一次向Proxy对象要求施以加载Record缓存的操作,提交用上一次的参数请求数据,若需要刷新数据用load,否则会将上次参数再次请求 [^1][^4]。 - **properties中的load()store()**:load用于从输入流中读取属性列表;store(OutputStream out, String comments) 以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键元素对)写入输出流 [^5]。 - **ARM指令集之批量Load/Store指令**:批量Load指令用于从内存将数据加载到寄存器,批量Store指令用于将寄存器中的数据存储到内存,且在栈操作中有不同的栈类型定义,如Full栈、Empty栈、Ascending栈、Descending栈等 [^2]。 - **Load - Store体系结构**:在RISC设计的Load - Store结构中,CPU不会对内存中的数据进行操作,所有计算在寄存器中完成,寄存器内存的通信由单独的指令完成;而在CSIC中,CPU可以直接对内存进行操作 [^3]。 ```python # 这里仅为示例代码结构,并非实际对应上述所有场景代码 # 模拟ext中storeloadreload简单调用示例 class Store: def load(self, options): print(f"Loading with options: {options}") return True def reload(self, options): print(f"Reloading with previous options (simulated): {options}") store = Store() store.load({"param": "new"}) store.reload({"param": "old"}) # 模拟propertiesloadstore简单调用示例 import io from configparser import ConfigParser config = ConfigParser() config['DEFAULT'] = {'ServerAliveInterval': '45', 'Compression': 'yes'} # store操作 with io.StringIO() as buffer: config.write(buffer) output = buffer.getvalue() print("Storing properties:") print(output) # load操作 config.read_string(output) print("Loading properties:") for key in config['DEFAULT']: print(f"{key}: {config['DEFAULT'][key]}") ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值