androidassets文件夹浅谈

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

androidassets⽂件夹浅谈
---恢复内容开始---
最近在研究assets⽂件夹的⼀些属性跟使⽤⽅法。

根据⽹上⼀些⽂章、实例做⼀下汇总,拿出来跟⼤家分享下,有不⾜的地⽅还请多多指教。

⾸先了解⼀下assets是⼲什么⽤的,assets英⽂单词的表⾯意思是资产、资源,顾名思义,这个⽂件夹下放的肯定是⼀些资源⽂件,⽽
且assets ⽂件夹是存放不进⾏编译加⼯的原⽣⽂件,即该⽂件夹⾥⾯的⽂件不会像 xml, java ⽂件被预编译,可以存放⼀些图
⽚,html,js, css 等⽂件。

assets⽂件夹下的⽂件不会被映射到R.java中,访问的时候要⽤到AssetManager类。

可以通过以下⽅式获取输⼊流来进⾏写操作:
AssetManager am = null;
am = getAssets();
InputStream in = am.open("filename");
关于这个⽂件路径即filename 本来想上图说明的,奈何插⼊不了图⽚,所有就拿⽂字简单说⼀下。

现在assets⽂件夹下有⼀个images⽂件夹,iamges⽂件夹下有⼀张名为large.jpg 的图⽚。

filename=images/large.jpg
下⾯上代码具体看⼀下是怎么引⽤的(亲测好使)。

这段代码实现的功能是将large.jpg复制到路径为/mnt/sdcard/Imagexiang/a.jpg上⾯,纸上得来终觉浅,绝知此事要躬⾏嘛。

package xiang.assetsdemotest;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.res.AssetManager;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.activity_main);
AssetManager assetManager=getAssets();
InputStream asset = null;//⽤来获取从assets⽂件夹下的输⼊流
OutputStream out = null;//输出流,⽤来复制图⽚
BufferedInputStream bis=null;//缓存输⼊流
BufferedOutputStream bos=null;//缓存输出流
try {
asset=assetManager.open("images/large.jpg");
bis=new BufferedInputStream(asset);
out=new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+"/Imagexiang/a.jpg");
bos=new BufferedOutputStream(out);
byte ima[]=new byte[1024];
int len;
while((len=bis.read(ima))!=-1)
{
bos.write(ima, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
if(bos!=null)
{
bos.close();
}
if(out!=null)
{
out.close();
}
if(bis!=null)
{
bis.close();
}
if(asset!=null)
{
asset.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
奥还有⼀点:
Google的Android系统处理Assert有个bug,在AssertManager中不能处理单个超过1MB的⽂件,不然会报异常。

相关文档
最新文档