---恢复内容开始---

最近在研究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(R.layout.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的文件,不然会报异常。

最新文章

  1. .Net多线程编程—System.Threading.Tasks.Parallel
  2. Entity Framework 6 Recipes 2nd Edition(13-10)译 -> 显式创建代理
  3. android 自定义Style初探---ProgressBar
  4. MySQL_积分兑换的优惠券在某时间段内使用情况_ 20161215
  5. 微信支付 - V3退款
  6. 使用C#实现FTP的文件上传和下载【转】
  7. An Introduction to Interactive Programming in Python (Part 1) -- Week 2_2 练习
  8. li中包含span,在IE6、IE7下会有3pxbug
  9. POJ 1775 (ZOJ 2358) Sum of Factorials
  10. Socket 理解
  11. QDataStream类参考(串行化数据,可设置低位高位,以及版本号),还有一个例子
  12. VS2008下WinRar源码生成dll和 lib总结
  13. Laravel Auth验证
  14. 05 入门 - 浅谈 ASP.NET MVC程序的工作原理
  15. 【webpack】-- 自动刷新与解析
  16. Python编程练习:平方值格式化
  17. 【Git】Git使用记录: 撤回已经commit到本地的提交记录
  18. 20135316Linux内核学习笔记第六周
  19. Android TextView文字空格
  20. 自动化部署之jenkins及简介

热门文章

  1. mysql执行大量sql语句
  2. WPF 数据绑定Binding
  3. less中的减号处理
  4. Windbg使用简明指南
  5. WCF学习总结
  6. SQL Developer新建连接
  7. 矩阵k次幂 采用三重循环
  8. 将 Tor socks 转换成 http 代理
  9. 前端工程师IE6兼容性问题随笔(未完待续)
  10. C#开发系统服务时用的定时器组件