2011-08-29 93 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