我对Java编码很新,我正在尝试创建一个创建角色模板的插件。用户将键入命令/ char名称。我希望它然后检查命令发送者的文件是否存在,如果存在,它将在其.dat文件中的“Name:”字段下写入。如果该文件不存在,那么它将创建一个文件并在该字段中写入。我唯一的问题是创建,写入和读取文件。有一次,我设法让它创建用户文件并写下他们设置的名称,但我写不了更多,因为它会在文件中写出像“Name:Gender”这样的愚蠢内容。我也不知道如何从文件中读取,以及它需要能够获取其设置名称以更改其头部上方的名称标签。
这是我在命令“/ char gender”上使用的代码示例:
if (label.equalsIgnoreCase("char gender")) {
if (args.length < 2) {
sender.sendMessage("/char gender <Male or Female>");
return false;
}
if (args.equals("male")) {
PrintWriter writer1;
try {
writer1 = new PrintWriter("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml", "UTF-8");
writer1.println("Gender: Male");
writer1.close();
} catch (FileNotFoundException | UnsupportedEncodingException e) {
File file = new File("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml");
}
}
else if (args.equals("female")) {
PrintWriter writer1;
try {
writer1 = new PrintWriter("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml", "UTF-8");
writer1.println("Gender: Female");
writer1.close();
} catch (FileNotFoundException | UnsupportedEncodingException e) {
File file = new File("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml");
}
}
else {
sender.sendMessage("/char gender <male or female>");
}
我正在使用.yml文件来测试它是否有效,因为某些原因,它不会创建player.dat
您正在使用args
数组错误:
if (args.equals("male"))
else if (args.equals("female"))
一个String[]
永远不会是一个String
所以那些将永远都失败。假设args
翻译如下:
"/char gender male" -> new String[]{"/char", "gender", "male"}
你需要使用:
if (args[2].equals("male"))
else if (args[2].equals("female"))
此外,您的错误检查应该是:
if (args.length <= 2)
因为您需要3个参数来正确指定它。
因此标签中没有空格:
if(label.equalsIgnoreCase(“char gender”))
不起作用