assetmanager 安卓json数据保存到assets
无论是assetmanager还是安卓json数据保存到assets,它们都是当前热门话题。如果你对它们感到好奇,那么请跟随小编的脚步,一起来揭开它们的秘密吧!
Android 在assets的子文件夹如何读
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
1.先在Activity里面调用getAssets()来获取AssetManager引用。
2.再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3.然后就是用已经open file的inputStream读取文件,读取完成后记得inputStream.close()。
4.调用AssetManager.close()关闭AssetManager。
需要注意的是,来自Resources和Assets中的文件只可以读取而不能进行写的操作
代码
publicStringgetFromAssets(StringfileName){
try{
InputStreamReaderinputReader=newInputStreamReader(getResources().getAssets().open(fileName));
BufferedReaderbufReader=newBufferedReader(inputReader);
Stringline="";
StringResult="";
while((line=bufReader.readLine())!=null)
Result+=line;
returnResult;
}catch(Exceptione){
e.printStackTrace();
}
}
如何得到android项目assets目录中的内容
assets文件夹是android程序中存放相关外部文件的一个目录,Android官方提供了相应的方法去访问该文件夹中的内容,故此我们并不需要进行相关的路径判断等代码操作,直接调用相关方法打开文件并得到一个字节输入流(InputStream);
然后通过相应的字符编码方式读取字节解码为字符输入流(InputStreamReader);再通过BufferReader对字符输入流读取文本并将字符存入缓冲区以便能提供字符、数组和线段的高效读取;最后我们就能逐行对文件内容进行读取了;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
InputStream inputStream= getResources().getAssets().open("info.txt");
InputStreamReader inputStreamReader= new InputStreamReader(inputStream,"UTF-8");
BufferedReader bufferedReader= new BufferedReader(inputStreamReader);
String info="";
while((info= bufferedReader.readLine())!= null){
Log.i("fff", info);
Toast.makeText(MainActivity.this, info, 1000).show();
}
} catch(IOException e){
e.printStackTrace();
}
}
}
Android中asset文件夹和raw文件夹区别是什么
【答案】:res/raw和assets的相同点:
两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
res/raw和assets的不同点:
1)res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即 R.raw.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2)res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
3)读取文件资源举例:
读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作
InputStream is= getResources().openRawResource(R.raw.filename);
读取assets下的文件资源,通过以下方式获取输入流来进行写操作
AssetManager am= null;
am= getAssets();
InputStream is= am.open("filename");
安卓json数据保存到assets
新建assets文件夹,并将json文件复制到此文件夹中
在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。
2、访问json文件
try{
AssetManager assetManager= getAssets();//获得assets资源管理器(assets中的文件无法直接访问,可以使用AssetManager访问)
InputStreamReader inputStreamReader= new InputStreamReader(assetManager.open("namelist.json"),"UTF-8");//使用IO流读取json文件内容
BufferedReader br= new BufferedReader(inputStreamReader);
String line;
StringBuilder builder= new StringBuilder();
while((line= br.readLine())!=null){
builder.append(line);
}
br.close();
inputStreamReader.close();
JSONObject testJson= new JSONObject(builder.toString());//从builder中读取了json中的数据。
//直接传入JSONObject来构造一个实例
JSONArray array= testJson.getJSONArray("nameList");
Log.e("nameList",array.toString());
for(int i= 0;i
strings[i]= array.getString(i);
}
} catch(IOException e){
e.printStackTrace();
} catch(JSONException e){
文章分享到这里,希望我们关于assetmanager的内容能够给您带来一些新的认识和思考。如果您还有其他问题,欢迎继续探索我们的网站或者与我们交流,我们将尽力为您提供满意的答案。