Java 使用线程和bufferedWriter时出现空指针异常
我试图通过java将arduino连接到我的计算机上,我在网上找到了主代码,该代码将arduino发送到stdo。我一直在想如何将它放在一个文件中,我创建了“Scrittore”类,虽然在没有线程的情况下使用它一切都很好,但在使用主代码时,它给了我错误:Java 使用线程和bufferedWriter时出现空指针异常,java,nullpointerexception,serial-port,arduino,Java,Nullpointerexception,Serial Port,Arduino,我试图通过java将arduino连接到我的计算机上,我在网上找到了主代码,该代码将arduino发送到stdo。我一直在想如何将它放在一个文件中,我创建了“Scrittore”类,虽然在没有线程的情况下使用它一切都很好,但在使用主代码时,它给了我错误: **Exception in thread "Thread-1" java.lang.NullPointerException at ricezionearduinoseriale.Scrittore.scrivi(Scrittore.
**Exception in thread "Thread-1" java.lang.NullPointerException
at ricezionearduinoseriale.Scrittore.scrivi(Scrittore.java:32)
at ricezionearduinoseriale.SerialTest$SerialReader.run(SerialTest.java:67)
at java.lang.Thread.run(Thread.java:724)**
有人能帮我找到这个bug或者我做错了什么吗?(我刚开始使用java,在这方面我还很在行)
}
}您在scrivi函数和chiudi函数中使用的是bw、fw变量,它们是类的私有变量,而在open函数中使用的是声明为
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
我相信这条线应该是,
fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);
希望,这会有所帮助….我强烈怀疑之前抛出了异常,但您通常会忽略它,因为您捕获了大量异常并将其转储到System.out,然后继续,就好像它们从未发生过一样。这几乎不是您希望发生的事情。我会记住这一点,但我没有编写这一部分,错误出现在调用bw.write(content);,时的scrivi()方法中;,从代码中去掉这一点可以消除错误,这只是表明
bw
为空-这很容易,因为为bw
分配非空值的方法失败了。我也在一个单独的项目(没有线程)上尝试了该代码,它工作时不会给出错误,并且创建或编辑了文件,线程是否可能会干扰FileWriter&BufferedWriter?我不想猜测,但我想说的是,首先要做的是修复异常处理。大多数方法都应该声明抛出IOException,而不捕获任何内容。
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);