在Eclipse Android项目中包含本地.json文件

我有一个本地.json文件。 我不希望它在服务器上,我只是希望它被包含在我的应用程序。 我试图把它直接粘贴到我的项目中的Eclipse中,但是我得到了一个FileNotFoundException,我也尝试将它粘贴到Windows资源pipe理器/ Finder的工作区文件夹中,并得到相同的exception。 我应该把它放在哪里?

谢谢!

Solutions Collecting From Web of "在Eclipse Android项目中包含本地.json文件"

您应该将该文件放在Android项目的/assets/res/raw目录中。 从那里,你可以检索它: Context.getResources().openRawResource(R.raw.filename)Context.getResources().getAssets().open("filename")

把JSON文件放在assets文件夹中,我用这个方法

 public static String jsonToStringFromAssetFolder(String fileName,Context context) throws IOException { AssetManager manager = context.getAssets(); InputStream file = manager.open(fileName); byte[] data = new byte[file.available()]; file.read(data); file.close(); return new String(data); } 

在parsing时,我们可以使用如下的方法:

 String jsondata= jsonToStringFromAssetFolder(your_filename, your_context); jsonFileToJavaObjectsParsing(jsondata); // json data to java objects implementation 

更多信息: Prativa的博客

将文件放在资产文件夹中。 您可以使用AssetManager open(String fileName)来读取文件。

在项目文件夹下/资产。 如果你没有的话,就做吧。

将资产复制到本地存储

我有一个非常相似的需求。 我有一个标签模板文件,我需要提供一个蓝牙打印机configuration,所以我把它包括在我的资产目录中,并将其复制到内部存储器供以后使用:

 private static final String LABEL_TEMPLATE_FILE_NAME = "RJ_4030_4x3_labels.bin"; InputStream inputStreamOfLabelTemplate = getAssets().open( LABEL_TEMPLATE_ASSET_PATH ); labelTemplateFile = new File( getFilesDir() + LABEL_TEMPLATE_FILE_NAME ); copyInputStreamToFile( inputStreamOfLabelTemplate, labelTemplateFile ); printer.setCustomPaper( labelTemplateFile.getAbsolutePath() ); 

copyInputStreamToFile函数

 // Copy an InputStream to a File. // private void copyInputStreamToFile(InputStream in, File file) { try { OutputStream out = new FileOutputStream(file); byte[] buf = new byte[1024]; int len; while((len=in.read(buf))>0){ out.write(buf,0,len); } out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } }