一.
iOS方面操作
我先简短的介绍一下解决的思路,.plist
文件里面放的可能是数组也可能是字典,我们如果直接用NSLog
方法打印数组,字典的时候,我们会得到的
就是这样的编码格式的内容,这显然是不能用在
android
的,所以我们的思路是要将.plist
中的内容打印为我们能处理的内容,那就是JsonString
了。
以iOS
这边的做法,如图片所示,先将plist
文件放入,然后读取出内部的数组信息,然后用SBJson
转化为NSString
,然后在NSLog
打印出来,运行程序我们会得到
很好我们已经进行一半了,然后在控制台复制这些数据到一个文本文件中如
至此
iOS
这边的处理完成了,然后是txt
文件跟android
之间的处理手法,让我们继续看下去
android方面操作
首先现在android
工程中的res
文件夹中新建raw
文件夹,然后将我们得到的areainfo.txt
,放入到这个raw
文件夹中,细心的你可能注意到了,areainfo
的i
我改成小写了,大家留意一下,这里不要大写,不允许。跟着操作你应该会是这样的结构
然后我们要做的事情是把
txt
中的内容读取出来
InputStream inputStream = getResources().openRawResource(R.raw.areainfo);
String areaInfo = UtilTools.getStringFromInputStream(inputStream);
JSONArray myJsonArray;
try
{
myJsonArray = new JSONArray(areaInfo);
for(int i=0 ; i < myJsonArray.length() ;i++)
{
//获取每一个JsonObject对象
JSONObject provinceObject = myJsonArray.getJSONObject(i);
//获取省区域的值
String ProvinceName = provinceObject.getString("State");
countries.add(ProvinceName);
// Log.i("areaInfo", "省区域名称内容为:"+ProvinceName);
//获取市区数组中对象的对象
JSONArray cityArray = provinceObject.getJSONArray("Cities");
List<String> tempCitiesForAdd = new ArrayList<String>();
for(int j=0 ; j < cityArray.length() ;j++){
//获取每一个JsonObject对象
JSONObject cityObject = cityArray.getJSONObject(j);
//获取省区域的值
String cityName = cityObject.getString("city");
tempCitiesForAdd.add(cityName);
// Log.i("areaInfo", "城市名称内容为:"+cityName);
}
cities.add(tempCitiesForAdd);
}
}catch (JSONException e)
{
}
我们可以这样
InputStream inputStream = getResources().openRawResource(R.raw.areainfo)
;从
txt
中将内容以输入流的方式读出来,然后我们再处理输入流,这里我也把
UtilTools
中的方法贴出来
/**
* @author chenqiang
* @version 2015年11月6日 下午1:49:31
*/
public class UtilTools {
//将输入流转化为字符串
public static String getStringFromInputStream(InputStream inputStream) {
InputStreamReader inputStreamReader = null;
try {
inputStreamReader = new InputStreamReader(inputStream, "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuffer sb = new StringBuffer("");
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}