2011-08-29 91 views
0

我正在嘗試用java讀取ofx文件。 但我得到以下錯誤:Unhandled exception type FileNotFoundException(第二行)。我正在使用OFx4j。你能給我一些關於那個的提示嗎?用java解析Ofx文件

這是迄今爲止我所編寫的代碼:

String filename=new String("C:\\file.ofx"); 
    FileInputStream file = new FileInputStream(filename); 
    NanoXMLOFXReader nano = new NanoXMLOFXReader(); 

    try 
    { 
     nano.parse(stream); 
     System.out.println("woooo It workssss!!!!"); 
    } 
    catch (OFXParseException e) 
    { 
    } 

感謝您的意見,我做了一些改變:

String FILE_TO_READ = "C:\\file.ofx"; 


    try 
    { 
     FileInputStream file = new FileInputStream(FILE_TO_READ); 
     NanoXMLOFXReader nano = new NanoXMLOFXReader(); 


     nano.parse(file); 
     System.out.println("woooo It workssss!!!!"); 
    } 
    catch (OFXParseException e) 
    { 
     System.out.println("Message : "+e.getMessage()); 
    } 
    catch (Exception e1) 
    { 
     System.out.println("Other Message : "+e1.getMessage()); 
    } 

但現在我得到這樣的:

異常在OfxTest。OfxTest.afficherFichier(OfxTest.java:31) 在線程「main」java.lang.NoClassDefFoundError:net/n3/nanoxml/XMLParseException 。 main(OfxTest.java:20) 引發:java.lang.ClassNotFoundException:net.n3.nanoxml.XMLParseException at java.net.URLClassLoader $ 1.run(未知源) at java.security.AccessController.doPrivileged(Native法) 在java.net.URLClassLoader.findClass(來源不明) 在java.lang.ClassLoader.loadClass(來源不明) 在sun.misc.Launcher $ AppClassLoader.loadClass(來源不明) 在java.lang.ClassLoader中.loadClass(未知源) ... 2更多

我想弄明白。我相信它找不到XMLParseException。但我不確定。

+0

您正在打開一個流,但沒有檢查異常。 – doNotCheckMyBlog

+2

不要寫'new String(「C:\\ file.ofx」)',只需寫'String filename =「C:\\ file.ofx」;'沒有理由顯式創建一個新的'String'對象來自文字字符串。 – Jesper

+0

注意到@Jesper,在閱讀他/她的異常之後,我直接跳轉到輸入流代碼:)。 – doNotCheckMyBlog

回答

2

這意味着你沒有捕獲FileNotFoundException。此外,儘管這與您的錯誤消息無關,但作爲最佳做法,您應該始終關閉您的finally文件流,如下所示。也不需要對文件名上的新String()進行操作。

添加此catch塊的FileNotFoundException: - 那你遇到

String filename = "C:\\file.ofx"; 
    FileInputStream file = null; 
    NanoXMLOFXReader nano = null; 
    try 
    { 
     file = new FileInputStream(filename); 
     nano = new NanoXMLOFXReader(); 
     nano.parse(stream); 
     System.out.println("woooo It workssss!!!!"); 
    } 
    catch (OFXParseException e) 
    { 
     e.printStackTrace(); 
     throw e; 
    }catch (FileNotFoundException e){ 
     e.printStackTrace(); 
     throw e; 
    }finally{ 
     if(file!=null){ 
      file.close(); 
     } 
    } 
+1

可以在try {} catch {}塊之外打開流嗎?因爲FileNotFoundException將在「FileInputStream file = new FileInputStream(filename);」被調用,是嗎? – doNotCheckMyBlog

+0

@krio - 對不起,我很着急,寫得太快了......現在我修復了代碼片段。現在就試試。這是一個簡單的問題,他只是沒有捕捉到一個例外.. :) – CoolBeans

+0

讓Bon_chan嘗試它!因爲我也回答了!無論如何,讀了你的代碼後感到困惑,並不想downvote,因爲我覺得這是一個誠實的錯誤;)乾杯 – doNotCheckMyBlog