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