2013-8-22 android开发问题

来源:互联网 发布:编程工具 编辑:程序博客网 时间:2024/06/05 20:09

1.json与java对象互转,

 Gson gson = new Gson(); String json = gson.toJson(java对象); JSONObject docInfo = new JSONObject(json); jsonArray.put(i, docInfo);String tempDoc="json串 数组"Gson gson = new Gson(); dlist = gson.fromJson(tempDoc, new TypeToken<List<DocEntity>>(){}.getType());//得到文档对象数组


2.读取本地文件 之字符乱码问题(就是编码问题)

 /**     * 读取文件内容,返回字符串     * @param fis     * @return     * @throws IOException     */    public static String readfileforString(FileInputStream fis) throws IOException{    String result=null;         String line =null;          BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"GB2312")) ;          while((line = reader.readLine())!=null){          if(result==null){          result=line;          }else{          result=result+line;          }          }          fis.close();    return result;    }

3.访问 assets目录下的文件

 (1)。String path="file:///android_asset/a.jpg"

   (2). 

AssetManager类可用于访问assets目录下文件,assets目录下存放的,也是资源文件,然而与res下相比有所不同:

一、 存放在res/raw下的文件,会相应的生成ID,而在assets下的文件,不会生成ID; 

二、   asset和res下的文件都是只能读不能写的;

三、    在AssertManager中不能处理单个超过 1MB的文件,不然会报异常,而第二种raw没这个限制。

用:InputStream in = getResources().getAssets().open(fileName,AssetManager.ACCESS_RANDOM);读取其中文件,当读取一个400多K的文件时,仍然正常,然而在读取一个7M多的文本时,虽然in.avaibile能显示出正确的流长度,也未报异常,但在read后,所得字符串长度为0。或许用raw格式访问方法可以读取,但考虑到很少在assets中放置如此大的文本,所以暂不管这一步。若读取存储卡上的文件,则不需用AssetManager类。可以自由访问。

另,open返回的是InputStream对象,虽open时有ACCESS_RANDOM模式,然而InputStream却没有类似seek的方法对应,不知如何实现随机读取。