关于Android Assets读取文件为File对象的问题,在Assets里面放置文件,在使用的时候,一般是使用AssetManger对象,open方法获取InputStream

然后进行其他操作.

这里遇到了这样需求,直接把Assets里面文件读取为一个File对象,找了半天,没有找到这样方法,搜索了很久,发现这样是行不通的.

是不能直接从asset获取然后直接转换为File对象的,因为asset被存储为apk中,除非你解压Apk文件,一般是不能找到一个Path实例化一个File对象的,

这里也有特殊情况,webview可以根据asset的路径加载在asset存放的.html文件:

WebView wv = new WebView(context);
wv.loadUrl("file:///android_asset/help/index.html");

如果需要一个File的时候,需要从新拷贝一份,把File存储在设备上,

然后再使用。

public static void writeBytesToFile(InputStream is, File file) throws IOException{
FileOutputStream fos = null;
try {
byte[] data = new byte[2048];
int nbread = 0;
fos = new FileOutputStream(file);
while((nbread=is.read(data))>-1){
fos.write(data,0,nbread);
}
}
catch (Exception ex) {
logger.error("Exception",ex);
}
finally{
if (fos!=null){
fos.close();
}
}
}

或者直接InputStream转换为String,然后执行其他操作.

   AssetManager am = getActivity().getAssets();
InputStream inputStream = am.open("chapter1/ObservableVSIterator.java");
String json = null;
try {
int size = inputStream.available();
byte[] buffer = new byte[size];
inputStream.read(buffer);
inputStream.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}

最新文章

  1. rbd cache (一)
  2. 七个结构模式之适配器模式(Adapter Pattern)
  3. 报表控件NCReport教程:集成NCReport到Qt应用程序中
  4. [HTML]background-size可以缩放大小
  5. JAVA基础知识之Queue集合
  6. html-----011--子窗体iframe
  7. linux操作系统cron详解
  8. Android Canvas设置绘画时重叠部分的处理模式【含效果图】
  9. python--对函数的理解
  10. Linux的基础命令
  11. Spring Boot + Spring Cloud 实现权限管理系统 (集成 Shiro 框架)
  12. iOS开发时使用的bundle路径
  13. PyQt5 的几个核心模块作用
  14. js async await 终极异步解决方案
  15. 开工:创建虚拟机,xshell连接虚拟机,复制虚拟机,docker安装,添加加速器
  16. 【DIV+CSS】代码作业练习DIV+CSS太极阴阳图
  17. Oracle 通过字段名查询其所在的表
  18. YAPTCHA UVALive - 4382(换元+威尔逊定理)
  19. R语言--时间序列分析步骤
  20. Windows7下4种方式快速显示桌面

热门文章

  1. PHP原始的数据库操作
  2. 灯塔(LightHouse)
  3. js 非IE火狐插件检测
  4. Linux远程拷贝scp命令
  5. PHP CI框架下,如果配置NGINX(根目录和子目录两种模式)
  6. Spring-AOP实践 - 统计访问时间--StopWatch
  7. PhpForm表单验证
  8. POJ 3046 Ant Counting DP
  9. 第03讲- 第一个Android项目
  10. redis实现spring-data-redis整合