您好我正在为bukkit制作一个我的工作服务器modding程序的插件。这个程序要求我将一个罐子放入带有插件文本文档的foulder中,无论如何都要提供类位置。然后它使用我的类并将它转换为类,它需要我的类继承。我正在尝试在与我的程序相同的目录中写一个文本文件,所以我写了这个(这是一个钱程序)(playerName是一个pramater我用它作为文件名,因为它是你保持平衡的玩家)< / p>
try{
FileWriter fstream = new FileWriter(new File(".").getAbsolutePath()+File.separator+playerName + ".txt",true);
getLogger().log(Level.INFO,"trying to save text document to " + new File("").getAbsolutePath()+File.separator+playerName + ".tct");
writer = new BufferedWriter(fstream);
writer.write("30");
return 30;
}
catch(Exception err){
getLogger().log(Level.INFO, "Exception occoured!{0}", err.getMessage());
return -1;
}
当我尝试使用此代码读取它时会抛出异常
BufferedReader reader = new BufferedReader(new FileReader(new File(".").getAbsolutePath()+"/"+playerName));
Integer i = Integer.getInteger(reader.readLine());
return i.intValue();
此外,我找不到它所写的文本文件。有什么建议? 此外,我想尝试将其保存回文件,因此它不会保存在.jar文件中,但我不知道该怎么做。 还有可能将文件保存在正在使用该类的程序的文件夹中吗?谢谢XD
答案 0 :(得分:0)
这是我见过的最奇怪的事情:
FileWriter fstream = new FileWriter(new File(".").getAbsolutePath()+File.separator+playerName + ".txt",true);
getLogger().log(Level.INFO,"trying to save text document to " + new File("").getAbsolutePath()+File.separator+playerName + ".tct");
尝试清理:
File f=new File(playerName + ".txt");
FileWriter fstream = new FileWriter(f, true);
getLogger().log(Level.INFO,"trying to save text document to " + f.getAbsolutePath());
接下来的事情:在使用之后你应该总是关闭文件。
然后你的文件名不匹配。有一次,playername+".txt"
下次只有playername
但最大的错误是:
Integer i = Integer.getInteger(reader.readLine());
return i.intValue();
Integer.getInteger
不解析字符串。它将查找该名称的系统属性(您将没有名为"30"
的系统属性)并将其解释为整数(如果存在)。在您的情况下,它会返回null
,因此您在调用NullPointerException
时会得到intValue
。请改用Integer.parseInt
:
try(BufferedReader reader = new BufferedReader(new FileReader(playerName+".txt"))) {
Integer i = Integer.parseInt(reader.readLine());
return i.intValue();
}