关于Android Assets读取文件为File对象

关于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;
     }

 

时间: 2024-10-14 18:07:06

关于Android Assets读取文件为File对象的相关文章

Android学习之文件存储读取_Android

前言 相信大家都知道知道,在AndroidOS中,提供了五中数据存储方式,分别是:ContentProvider存储.文件存储.SharedPreference存储.SQLite数据库存储.网络存储.那么这一篇,我们介绍文件存储. 1.Android文件的操作模式 学过Java的同学都知道,我们新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式,Android中的操作模式如下: 2.文件的操作模式 我们

ASP FSO设置/读取文件(夹)属性详解

例  代码如下 复制代码 <HTML> <HEAD><TITLE>获取文件属性代码</TITLE></HEAD> <BODY> <% '创建一个FileSystemObject对象的事例 Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject") '创建一个File对象的事例 filename=server.mappath("

C++/Php/Python/Shell 程序按行读取文件或者控制台

写程序经常需要用到从文件或者标准输入中按行读取信息,这里汇总一下.方便使用 1. C++  读取文件 1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 const char* in_file = "input_file_name"; 6 const char* out_file = "output_file_name"; 7 8 FILE *p_in = fopen(in_f

Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法_Android

本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String assetDir, String dir) { String[] files; try { // 获得Assets一共有几多文件 files = this.getResources().getAssets().list(assetDir); } catch (IOException e1) { ret

Android开发实现读取Assets下文件及文件写入存储卡的方法

本文实例讲述了Android开发实现读取Assets下文件及文件写入存储卡的方法.分享给大家供大家参考,具体如下: 调用一个反编译的.so文件,查看起加密和解密情况,需要解析上万的数组,而so文件加密解密都是通过Byte来进行,又需要把String字符串转化为 Byte,当把数据直接写在代码中就会提示多Byte数组过大.最后把数组写到Assets文件加下,读取txt文本文件. 读取Assets方法如下: public String getFromAssets(String fileName) {

Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?

前言 上篇<Android单元测试 - 几个重要问题> 讲解了"何解决Android依赖.隔离Native方法.静态方法.RxJava异步转同步"这几个Presenter单元测试中常见问题.如果读者你消化得差不多,就接着看本篇吧. 在日常开发中,数据储存是必不可少的.例如,网络请求到数据,先存本地,下次打开页面,先从本地读取数据显示,再从服务器请求新数据.既然如此重要,对这块代码进行测试,也成为单元测试的重中之重了. 笔者在学会单元测试前,也像大多数人一样,写好了sql代码

Android学习之文件存储读取

前言 相信大家都知道知道,在AndroidOS中,提供了五中数据存储方式,分别是:ContentProvider存储.文件存储.SharedPreference存储.SQLite数据库存储.网络存储.那么这一篇,我们介绍文件存储. 1.Android文件的操作模式 学过Java的同学都知道,我们新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式,Android中的操作模式如下: 2.文件的操作模式 我们

Android 中读取Excel文件实例详解

Android 中读取Excel文件实例详解 最近有个需求需要在app内置数据,新来的产品扔给了我两个Excel表格就不管了(两个表格格式还不统一...),于是通过度娘等方法找到了Android中读取Excel表格文件的一种方法,记录一下. 闲话一下Excel中工作簿和工作表的区别: 工作簿中包含有工作表.工作簿可以由一张或多张工作表组成,一个工作簿就是一个EXCEL表格文件. 好了,开始读取表格文件吧. 前提 首先,我们假设需要读取的表格文件名字为test.xls, 位于assets根目录下.

Android应用读取Excel文件的方法_Android

本文实例讲述了Android应用读取Excel文件的方法.分享给大家供大家参考,具体如下: ReadExcel.java文件: public class ReadExcel extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)