如何在java类的Assets文件夹中打开文件

时间:2014-09-05 05:18:58

标签: java android

我想使用Assets文件夹中的文件,但在我的应用程序中,我想在java中获取该文件但不在Activity类中。请帮助我如何做到这一点。

我的意思是,我想写一段代码,用于在java文件中使用Async Task解析json文件,其中我的Json文件位于Asset文件夹中。

我需要为此扩展什么类以及如何访问资产中的文件。

谢谢

3 个答案:

答案 0 :(得分:0)

试试这个:

AssetManager assetManager = getResources().getAssets();
InputStream inputStream = null;

    try {
        inputStream = assetManager.open("YourFile.txt");
            if ( inputStream != null)
                Log.d(TAG, "It worked!");
        } catch (IOException e) {
            e.printStackTrace();
        }

不要使用

  

InputStream is = assetManager.open(“assets / YourFile.txt”);

希望这可以帮到你!

答案 1 :(得分:0)

使用它....它对我有所帮助,可能对你有用!

    AssetManager am = getActivity().getAssets();

OR

    AssetManager am = mContext.getAssets();
    try {
        am.open("filename");
    } catch (IOException e) {
        e.printStackTrace();
    }

答案 2 :(得分:0)

您可以将上下文作为参数传递给该方法并读取该文件,字符串“jsoncontent”将保存您的json内容:

public class readFile {
public readFile(Context c) throws IOException { 
InputStream stream=c.getAssets().open("yourfile.json");
String jsoncontent;
if(stream!=null){
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
    try {
        StringBuilder builder = new StringBuilder();
        while (reader.readLine() != null) {
            builder.append(reader.readLine());

        }
        jsoncontent = builder.toString();

    } finally {
        reader.close();
    }
    Log.d("file",jsoncontent);
    }

来自您的活动,请致电:

new readFile(getApplicationContext());
  

编辑:

如果你想异步调用它(不阻塞UI线程),请在AsyncTask的doInBackground()方法中调用它。

AsyncTask版本的代码是:

public class readFile extends AsyncTask<Context, Void, Void> {
@Override
protected Void doInBackground(Context... context)  {
    // TODO Auto-generated method stub
    try{
        Context mcontext=context[0];
    InputStream stream=mcontext.getAssets().open("yourfilename.json");
    String jsoncontent;
    if(stream!=null){
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        try {
            StringBuilder builder = new StringBuilder();
            while (reader.readLine() != null) {
                builder.append(reader.readLine());

            }
            jsoncontent = builder.toString();

        } finally {
            reader.close();
        }
        Log.d("file",jsoncontent);
        }

    }
    catch(Exception e){
        e.printStackTrace();
    }
    return null;
}

}

在您的活动电话中:

new readFile().execute(getApplicationContext());