class DAOBilTextFile implements DAOBil {
private ArrayList<DTOBil> dtoBilar;
public DTOBil dtobil;
public DAOBilTextFile() {
dtoBilar = new ArrayList<DTOBil>();
Charset charset = Charset.forName("UTF-8");
BufferedReader reader = null;
try {
try{
reader = Files.newBufferedReader(Paths.get("databilar.txt"), charset);
String line = null;
DTOBil bil = null;
while((line = reader.readLine()) != null){
//tar in line och lägger in den i en array med hjälp av ; för att splitta datat
String strBilar[] = line.split(";");
bil = new DTOBil(strBilar[0], strBilar[1], strBilar[2], strBilar[3]);
//lägger till bil i arraylistan
dtoBilar.add(bil);
}reader.close();//this line is the error!
}finally{
reader.close();
}} catch (IOException ioexp) {
System.out.println(ioexp.getMessage());
}
}
@Override
public void create(DTOBil dtobil) {
Charset charset = Charset.forName("UTF-8");
//klasser för att skriva till textfil
BufferedWriter writer = null;
try {
writer = Files.newBufferedWriter(Paths.get("databilar.txt"), charset, StandardOpenOption.APPEND);
writer.write(dtobil.getRegnr() + ";"
+ dtobil.getMarke() + ";"
+ dtobil.getModell() + ";"
+ dtobil.getsokVag());
writer.newLine();
System.out.println("La till en bil");
writer.close();
} catch (IOException ioexp) {
System.out.println(ioexp.getMessage());
}
}
我得到一个“线程异常”AWT-EventQueue-0“java.lang.NullPointerException 在swing.labb3.DAOBilTextFile。(DAOBilTextFile.java:50)“ 但为什么?我不明白?而我的朋友做了完全相同的事情,他的代码也有效...... 这不是所有代码,但我在评论中放置了第50行。
感谢您的帮助!
答案 0 :(得分:2)
看起来,您错过了databilar.txt
文件,因此newBufferedReader
来电会引发IOException
。所以它转移到finally块并尝试关闭阅读器,但由于阅读器未被newBufferedReader
调用设置,它仍然是null
,并且尝试关闭它会抛出NullPointerException
}。在finally块中,您需要对其进行测试:
} finally {
if (reader != null) reader.close();
}
然后它将能够无害地退出最终阻塞并转到外部try块中的IOException捕获器。
但最大的问题是它无法找到该文件。