2017-03-05 108 views
0

为什么Eclipse说我的.json文件没有找到?它位于离我的主要项目为:
StockIODebug /资产/ StockIODebug.json.json文件未找到时

我试图移动以.json文件到不同的文件夹,但没有运气。我开始认为还有更多的东西比找不到文件。

public void clickme (View view) { 
     JSONParser parser = new JSONParser(); 

     try { 
      Object obj = parser.parse(new FileReader("/assets/StockIODebug.json")); 

      //Read entire file as object 
      JSONObject jsonObject = (JSONObject) obj; 
      System.out.println(jsonObject); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

的logcat:

03-04 21:31:00.356: I/Timeline(24149): Timeline: Activity_idle id: [email protected] time:78464377 
03-04 21:31:01.106: D/ViewRootImpl(24149): ViewPostImeInputStage processPointer 0 
03-04 21:31:01.156: D/ViewRootImpl(24149): ViewPostImeInputStage processPointer 1 
03-04 21:31:01.166: W/System.err(24149): java.io.FileNotFoundException: /assets/StockIODebug.json: open failed: ENOENT (No such file or directory) 
03-04 21:31:01.186: W/System.err(24149): at libcore.io.IoBridge.open(IoBridge.java:452) 
03-04 21:31:01.186: W/System.err(24149): at java.io.FileInputStream.<init>(FileInputStream.java:76) 
03-04 21:31:01.186: W/System.err(24149): at java.io.FileInputStream.<init>(FileInputStream.java:103) 
03-04 21:31:01.186: W/System.err(24149): at java.io.FileReader.<init>(FileReader.java:66) 
03-04 21:31:01.186: W/System.err(24149): at com.example.stockiodebug.MainActivity.clickme(MainActivity.java:37) 
03-04 21:31:01.186: W/System.err(24149): at java.lang.reflect.Method.invoke(Native Method) 
03-04 21:31:01.186: W/System.err(24149): at android.view.View$DeclaredOnClickListener.onClick(View.java:4735) 
03-04 21:31:01.186: W/System.err(24149): at android.view.View.performClick(View.java:5697) 
03-04 21:31:01.186: W/System.err(24149): at android.widget.TextView.performClick(TextView.java:10815) 
03-04 21:31:01.186: W/System.err(24149): at android.view.View$PerformClick.run(View.java:22526) 
03-04 21:31:01.186: W/System.err(24149): at android.os.Handler.handleCallback(Handler.java:739) 
03-04 21:31:01.186: W/System.err(24149): at android.os.Handler.dispatchMessage(Handler.java:95) 
03-04 21:31:01.186: W/System.err(24149): at android.os.Looper.loop(Looper.java:158) 
03-04 21:31:01.186: W/System.err(24149): at android.app.ActivityThread.main(ActivityThread.java:7229) 
03-04 21:31:01.186: W/System.err(24149): at java.lang.reflect.Method.invoke(Native Method) 
03-04 21:31:01.186: W/System.err(24149): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
03-04 21:31:01.186: W/System.err(24149): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
03-04 21:31:01.186: W/System.err(24149): Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory) 
03-04 21:31:01.186: W/System.err(24149): at libcore.io.Posix.open(Native Method) 
03-04 21:31:01.186: W/System.err(24149): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
03-04 21:31:01.186: W/System.err(24149): at libcore.io.IoBridge.open(IoBridge.java:438) 
03-04 21:31:01.186: W/System.err(24149): ... 16 more 

回答

0

我不能肯定(无需登录到你的电脑!),但最有可能的解释是,该文件真的是不是“有”。也就是说,它确实不在目录“/ assets”中。请注意,这是文件系统根目录中目录的绝对路径名。

像这样的问题通常会成为误解路径名​​的含义。我的猜测是你正试图在你的项目中加载一个资产文件。在这种情况下,您可能需要:

  • 前缀与项目
  • “CD”该项目的运行你的应用程序之前,绝对路径的路径,然后用相对路径
  • 确保包含资产的文件夹位于应用程序的类路径中(例如,在应用程序的JAR文件中),并使用类加载器加载它们。

如果您的应用程序打算被打包/分发给他人使用,那么最后的方法是推荐的方法。 (所有其他东西都是平等的......)

+0

嗨Stephen - The .json文件打算作为应用程序的一部分进行打包。如果我无法使用我的代码加载它,是否有另一种方法来加载和读取文件?同样奇怪的是,当我创建一个Java控制台应用程序时,相同的代码仅适用于Android。对于新手问题抱歉,我是全新的。 – user7655804

+0

我已经添加了有关从类路径加载资源的参考。 –