Java 在EclipseAndroid项目中包含local.json文件
我有一个本地的.json文件。我不想把它放在服务器上,我只想把它包含在我的应用程序中。我试图在我的项目中将它直接粘贴到Eclipse中,但我得到了一个FileNotFoundException,我还尝试将它粘贴到Windows Explorer/Finder的工作区文件夹中,并得到了相同的异常。我应该把它放在哪里Java 在EclipseAndroid项目中包含local.json文件,java,android,eclipse,json,Java,Android,Eclipse,Json,我有一个本地的.json文件。我不想把它放在服务器上,我只想把它包含在我的应用程序中。我试图在我的项目中将它直接粘贴到Eclipse中,但我得到了一个FileNotFoundException,我还尝试将它粘贴到Windows Explorer/Finder的工作区文件夹中,并得到了相同的异常。我应该把它放在哪里 谢谢 在项目文件夹中的/assets下。如果您没有,就创建一个。将文件放在资产文件夹中。 您可以使用open(字符串文件名)读取文件 您应该将文件放在Android项目的/assets
谢谢 在项目文件夹中的/assets下。如果您没有,就创建一个。将文件放在资产文件夹中。
您可以使用open(字符串文件名)读取文件 您应该将文件放在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);
}
解析时,我们可以使用以下方法:
String jsondata= jsonToStringFromAssetFolder(your_filename, your_context);
jsonFileToJavaObjectsParsing(jsondata); // json data to java objects implementation
更多信息:将资产复制到本地存储
我也有类似的需求。我有一个标签模板文件,我需要它来提供蓝牙打印机配置,因此我将其包含在我的资产目录中,并将其复制到内部存储器以供以后使用:
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函数
进一步澄清何时使用what:当需要为您生成资源ID时使用/res/raw。否则,您需要/assets。您的答案与此链接中的答案非常相似
// 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();
}
}