本节概要:完成properties配置
本节即完成对发件人、密码及服务器的配置,然后将其保存到properties文件中。
因此首先在properties创建一个名为data的properties文件
properties文件的保存数据是通过键值对的方式。
如下:即key=value的方式,“#”是注释。
在SendAccountOptionFrameController类中的do_saveButton_event()方法添加如下代码:
@FXML
void do_saveButton_event(ActionEvent event) {
// 获取发件人邮箱
String addresser = addresserTextField.getText();
// 发件人登录密码
String password = passwordField.getText();
// 服务器,这里使用的是smtp.163.com,是网易邮箱的第三方服务器
String server = serverTextField.getText();
// 实例化一个Map
Map dataMap = new HashMap();
// 将键值保存在Map中
dataMap.put("addresser", addresser);
dataMap.put("password", password);
dataMap.put("server", server);
// 调用SimpleTools的dataWriteProperties()方法将输入写入properties文件中
new SimpleTools().dataWriteProperties("src/main/resources/properties/data.properties",dataMap);
}
代码解释:
-
首先从设置界面的输入框中获取用户填入的数据。
-
然后实例化一个Map用来保存从界面传来的数据。
-
最后调用SimpleTools类中的工具方法dataWriteProperties(String fileName,Map<String,String> map);里面有两个参数,第一个参数是保存数据的properties文件的路径;第二个参数保存了键值对数据的map集合。
-
而dataWriteProperties(String fileName,Map<String,String> map);是在SimpleTools类自定义的,主要是properties.setProperty(String key,String value)方法向properties文件中写入键值对的。
dataWriteProperties()方法的代码如下:
/**
* 操作结果:生成属性文件
*
* @param fileName 文件路径
* @param maps 数据集合
*/
public void dataWriteProperties(String fileName, Map<String, String> maps) {
Properties properties = new Properties();
try {
File file = new File(fileName);
if (!file.exists()) {
file.createNewFile();
}
// 写入文件
for (String key : maps.keySet()) {
properties.setProperty(key, String.valueOf(maps.get(key)));
}
FileOutputStream fos = new FileOutputStream(file);
properties.store(fos, null);//store(...)指定的流仍保持打开状态
fos.flush();
fos.close();// 关闭流
} catch (IOException e) {
e.printStackTrace();
}
}
效果如下:
打开data.properties文件内容如下:
将这些配置保存在properties文件中后,当你再次点击设置按钮打开后,发现界面如下:
发现界面中的输入框是空的,这对用户体验并不好,因为他们并不知道他们的配置去哪里了,也不可能每次去打开data.properties文件查看,也或者如果再次点击保存按钮就使设置成了空。
因此在SendAccountOptionFrameController.java中的initialize()方法添加如下代码(将下面的代码直接替换initialize()方法即可):
public void initialize() {
// 初始化图标设置
new SimpleTools().setLabeledImage(
new Labeled[]{saveButton, cancelButton},
new String[]{"src/main/resources/images/save.png",
"src/main/resources/images/cancel.png"});
// 从data.properties文件中读取配置
Map dataMap = new SimpleTools().readReturnMap("src/main/resources/properties/data.properties");
String addresser = (String) dataMap.get("addresser");
String password = (String) dataMap.get("password");
String server = (String) dataMap.get("server");
addresserTextField.setText(addresser);
passwordField.setText(password);
serverTextField.setText(server);
}
再次运行即可看到界面的输入框有内容了。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【20191029】可获取本节源码。