java将hashmap写入文件_HashMap到txt文件 - 写入密钥& Java OOP中的值

我正在创建一个ChatBox程序,该程序响应键入我的Java程序的关键字。我有一个存储为HashMap的响应列表,位于外部txt文件中。我想创建一个方法,使我能够添加到HashMap新的关键字(键):响应(值),因此,添加到外部txt文件。

我已经有了key:值插入到这个文本文件中,但是我很难尝试添加新的键:值,格式正确,然后检索它们。

我有一个名为' addtoresponses()'应该从方法中获取字符串参数并将它们插入到hashMap中。然后使用另一个名为' listMap'的类,使用另一种方法将hashMap写入txt文件。

当我运行我的代码时,hashMap会写入外部文本文件,因此它似乎可以工作(它将它写入外部文本文件,因此稍后可以被其他方法使用)。但是,当我再次运行我的程序时,我立即收到一条错误消息,说明这一点;

缺少文件missing-map.txt中的Hello响应(hello是插入的密钥)。

似乎关键:我加入的价值是失去“价值”'我输入我的方法的一部分。我被告知它可能是我的格式,即它应该以下列方式存储;

**key

response all on one line of length

key

another response all on one line

etc.**

但我不知道如何实现这一目标。我很确定它不是将HashMap插入txt文件的方法。我相信我是如何将这些值放入HashMap的,但我并不十分自信。

非常感谢有人可以查看我的代码并尝试查看我出错的地方,以及出现此错误消息的原因以及我如何解决它。

我已在下面发布了代码;

InstructorMode的构造函数>>

public InstructorMode()

{

helper = new FileAssistance();

edits = new HashMap();

}

添加到HashMap的方法(在InstructorMode类中)>>

public void addtoresponse(String key, String value)

{

edits.put(key, value);

helper.listaMap(edits, "missing-map.txt");

}

添加到外部txt文件的方法(名为FileAssistance的类)>>

public void listaMap(HashMap map, String filename)

{

if(map != null) {

try (FileWriter writer = new FileWriter(filename, true)) {

for(String key : map.keySet()) {

String value = map.get(key);

if(value == null) {

System.out.println("Warning: " +

key + " in listaMap.");

value = "Not sure";

}

writer.write(key.trim());

writer.write('\n');

writer.write(value.trim());

writer.write('\n');

}

writer.close();

}

catch(IOException e) {

System.out.println("Issue: " + filename +

" in listaMap");

}

}

else {

System.out.println("Null map passed to listaMap.");

}

}

非常感谢您的帮助!

编辑 - 读取HashMap的代码>>

public HashMap lookatM(String filename)

{

HashMap map = new HashMap<>();

try (BufferedReader reader =

new BufferedReader(new FileReader(filename))) {

String word;

word = reader.readLine();

while(word != null) {

String response = reader.readLine();

if(response != null) {

response = response.trim();

if(response.length() != 0) {

map.put(word, response);

}

else {

System.out.println("Blank response for " +

word + " in file " +

filename);

}

}

else {

System.out.println("Missing response for " +

word + " in file " +

filename);

}

word = reader.readLine();

}

}

catch(IOException e) {

System.out.println("Problem reading file: " + filename +

" in LookatM");

}

return map;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值