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的方法对应,不知如何实现随机读取。