Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在EclipseAndroid项目中包含local.json文件_Java_Android_Eclipse_Json - Fatal编程技术网

Java 在EclipseAndroid项目中包含local.json文件

Java 在EclipseAndroid项目中包含local.json文件,java,android,eclipse,json,Java,Android,Eclipse,Json,我有一个本地的.json文件。我不想把它放在服务器上,我只想把它包含在我的应用程序中。我试图在我的项目中将它直接粘贴到Eclipse中,但我得到了一个FileNotFoundException,我还尝试将它粘贴到Windows Explorer/Finder的工作区文件夹中,并得到了相同的异常。我应该把它放在哪里 谢谢 在项目文件夹中的/assets下。如果您没有,就创建一个。将文件放在资产文件夹中。 您可以使用open(字符串文件名)读取文件 您应该将文件放在Android项目的/assets

我有一个本地的.json文件。我不想把它放在服务器上,我只想把它包含在我的应用程序中。我试图在我的项目中将它直接粘贴到Eclipse中,但我得到了一个FileNotFoundException,我还尝试将它粘贴到Windows Explorer/Finder的工作区文件夹中,并得到了相同的异常。我应该把它放在哪里


谢谢

在项目文件夹中的/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();
    }
}