0
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());
     }
}

我在 swing.labb3.DAOBilTextFile.(DAOBilTextFile.java:50) 处收到“线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常”,但为什么呢?我不明白?我的朋友也做了同样的事情,他的代码也可以工作......这不是所有的代码,但我已经在评论中放置了第 50 行。

谢谢您的帮助!

4

1 回答 1

2

看起来,您缺少该databilar.txt文件,因此newBufferedReader调用会引发IOException. 所以它转移到 finally 块并尝试关闭阅读器,但由于阅读器没有被newBufferedReader调用设置,它仍然是null,并且尝试关闭它会抛出一个NullPointerException. 在 finally 块中,您需要对此进行测试:

} finally {
    if (reader != null) reader.close();
}

然后它将能够无害地退出 finally 块并到达外部 try 块中的 IOException 捕获器。

但最大的问题是找不到文件。

于 2013-02-22T01:30:54.737 回答