我一直在编写一个 Java 程序——特别是一个 Bukkit 插件,尽管这与问题无关——出于某种原因,我看不到我得到了 NullPointerException。下面摘录的是出现错误的代码。getPath()
经过充分测试并产生正确的目录 - 也就是说,配置文件应该在其中。配置文件被创建,并且应该已经被写入。我已经成功创建了测试器文件,配置文件也应该如此。
File config = new File(getPath("config"));
BufferedReader in = new BufferedReader(new FileReader(config));
skipLines(11, in);
if(in.readLine().equalsIgnoreCase("true")) { //Exception is here
System.out.println("Successfully wrote to config file");
}
else {
System.out.println("Failed to write text correctly to config file");
}
in.close();
整个事情都包含在一个 try/catch 语句中。
如果您需要更多信息,请询问,我很乐意提供。
注意:文件工作得很好——当我手动检查文件时,上面写着。这就是问题存在的原因。
写入文件的代码如下:
File exConfig = new File(System.getProperty("user.dir") + File.separator + "configExample");
PrintWriter out = new PrintWriter(new FileWriter(config));
BufferedReader in = new BufferedReader(new FileReader(exConfig));
for(int i = 1; i <= configLength; i++) {
out.println(in.readLine());
}
out.flush();
out.close();
System.out.println("Successfully wrote defaults to config");
configLength
是一个变量,等于配置中的行数。我已经对其进行了测试,并且可以正常工作。那里可能有一些奇怪的东西。名为“configExample”的文件如下:
########################################
# hPlugin is written by newbiedoodle #
########################################
# ----- Plugin config file ----- #
########################################
hPlugin
v.0.3
NOTE: Do not edit the config file besides changing the values - it may result in errors.
--------------
Enable hPlugin?
true
Strikes before being banned?
3
Godmode?
true
First time running the plugin?
true
Curse protection?
true
Emergency shelter?
true
Path building?
true
Blocked words/phrases (Separate with colon (:)):
shit:fuck:damn:bitch:hell
如您所见,这应该超过 11 行......如果第 11 行不是“真”,那么它仍然不应该导致错误。
好吧,经过一番鬼混之后,我让它工作了......结果,我搞砸了一个变量,因为一个函数有一个硬编码的文件名,而不是设置为我试图传递的变量。感谢所有的帮助!