我想使用Assets文件夹中的文件,但在我的应用程序中,我想在java中获取该文件但不在Activity类中。请帮助我如何做到这一点。
我的意思是,我想写一段代码,用于在java文件中使用Async Task解析json文件,其中我的Json文件位于Asset文件夹中。
我需要为此扩展什么类以及如何访问资产中的文件。
谢谢
答案 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());