存储文本数据的最佳方法是什么?

时间:2016-01-01 11:15:21

标签: android android-file

我是Android开发的新手,但我编写了很多C#(WinF,WPF)。我为app创建了一个测验应用程序(德语单词),我不太确定如何存储和加载字典(一个文件,其中行包含2个单词)。存储这些词典的最佳方法是什么?我google了一下,但没有找到确切的答案。目前我直接在代码中生成单词。 谢谢!

1 个答案:

答案 0 :(得分:1)

由于您只有键值对,我建议您从数据中创建一个json,存储到assests文件夹并在运行时使用。

例如。 CountyCode.json

  [
  {
    "country_name": "Canada",
    "country_code": 1
  },
  {
    "country_name": "United States of America",
    "country_code": 1
  },
  {
    "country_name": "US Virgin Islands",
    "country_code": 1
  },
  {
    "country_name": "Russia",
    "country_code": 7
  },
  {
    "country_name": "Tajikistan",
    "country_code": 7
  }]

使用以下代码在需要时加载并解析json数据。

从assests文件夹加载json

String countryJson = FileManager.getFileManager().loadJSONFromAsset(getActivity(), "countrycode.json");

解析json并使用

                try {
                    JSONArray jsonArray = new JSONArray(countryJson);
                    if (jsonArray != null) {
                        final String[] items = new String[jsonArray.length()];
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.getJSONObject(i);
                            items[i] = jsonObject.getString("country_name");
                        }

<强> FileManager.java

import android.content.Context;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by gaurav on 10/10/15.
 */
public class FileManager {
    static FileManager fileManager = null;

    private FileManager(){}

    public static FileManager getFileManager()
    {
        if(fileManager==null)
            fileManager = new FileManager();
        return fileManager;
    }

    public String loadJSONFromAsset(Context context,String fileName) {
        String json = null;
        try {
            InputStream is = context.getAssets().open(fileName);
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            json = new String(buffer, "UTF-8");
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;
    }
}