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

Posted 狂奔的小狮子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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;
     }

 

以上是关于关于Android Assets读取文件为File对象的主要内容,如果未能解决你的问题,请参考以下文章

手机如何读取assets隐藏目录

android 怎么样的资源要放在assets

android 怎么读取assets文件

android之文件操作——读取assets和raw文件下的内容

Assets系列:android读取assets目录下的txt文件

android如何获取assets文件夹下面文件的大小