如何从文本文件中搜索值

时间:2013-10-12 06:24:58

标签: android json

我正在通过使用学校名称作为URL中的参数从服务器获取学校信息现在我正在使我的应用程序离线。如果我从服务器获得所有学校名称并保存在SD卡中的文本文件中我如何通过给学校名称本地服务学校名称作为参数??

          URL2=www.xyz+ElementarySchools;
           URL2=www.xyz+MiddleSchools;
              URL2=www.xyz+HighSchools;



          try {
         Log.i("URL2",""+URL2);

        HttpClient client = new DefaultHttpClient();
         HttpConnectionParams
                .setConnectionTimeout(client.getParams(), 15000);
        HttpConnectionParams.setSoTimeout(client.getParams(), 15000);
        HttpUriRequest request = new HttpGet(URL2);
        HttpResponse response = client.execute(request);
        InputStream atomInputStream = response.getEntity().getContent();
        BufferedReader in = new BufferedReader(new    
                  InputStreamReader(atomInputStream), 8192);

        String line;
        String str = "";
        while ((line = in.readLine()) != null) {
            str += line;
        }



                            JSONObject json2 = new JSONObject(str);

        status = json2.getString("status");
        if (status.equals("1")) {
            message = "data";

            JSONArray school = json2.getJSONArray("data");

            for (int i = 0; i < school.length(); i++) {
                JSONObject object = school.getJSONObject(i);

                Category_ID.add(Long.parseLong(object
                        .getString("school_id")));
                Category_name.add(object.getString("name"));

            }

        }


                                }

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        IOConnect = 1;
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }








              {"status":1,"data":[
           {"school_id":"321","name":"Chavez","phone":"","email":"",
          "address":"","information":"","image":"","calendar_id":"2","id":"147","level_id":"1",
          "title":"Elementary Schools"},  

      {"school_id":"319","name":"Central","phone":"","email":"", 
     "address":"","information":"","image":"","calendar_id":"2",
     "id":"145","level_id":"1","title":"Elementary Schools"},

      {"school_id":"318","name":"Carver","phone":"","email":"",
    "address":"","information":"","image":"","calendar_id":"2",
    "id":"144","level_id":"1","title":"Elementary Schools"},

  {"school_id":"317","name":"Carson","phone":"","email":"",
  "address":"","information":"","image":"","calendar_id":"2","id":"143",
   "level_id":"1","title":"Elementary Schools"},

 {"school_id":"316","name":"Cadman","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"142","level_id":"1","title":"Elementary Schools"},

 {"school_id":"315","name":"Cabrillo","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"141","level_id":"1","title":"Elementary Schools"},

 {"school_id":"314","name":"Burbank","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"140","level_id":"1","title":"Elementary Schools"},

 {"school_id":"313","name":"Boone","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"139","level_id":"1","title":"Elementary Schools"},

{"school_id":"498","name":"Zamorano","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"324","level_id":"1","title":"Elementary Schools"},

 {"school_id":"451","name":"Pershing","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"277","level_id":"2","title":"Middle Schools"},

 {"school_id":"454","name":"Preuss","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"280","level_id":"2","title":"Middle Schools"},

{"school_id":"457","name":"Riley","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"284","level_id":"2","title":"Middle Schools"},

{"school_id":"462","name":"Roosevelt","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
"id":"288","level_id":"2","title":"Middle Schools"},

{"school_id":"468","name":"SCPA","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"294","level_id":"2","title":"Middle Schools"},

{"school_id":"478","name":"Standley","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"304","level_id":"2","title":"Middle Schools"},

 {"school_id":"431","name":"Muir","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"258","level_id":"3","title":"High Schools"},

 {"school_id":"439","name":"O'Farrell","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"267","level_id":"3","title":"High Schools"},


{"school_id":"452","name":"Point Loma","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
"id":"278","level_id":"3","title":"High Schools"},

 {"school_id":"454","name":"Preuss","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"281","level_id":"3","title":"High Schools"},


 {"school_id":"466","name":"San Diego","phone":"","email":"","address":"",
 "information":"","image":"","calendar_id":"1",
"id":"292","level_id":"3","title":"High Schools"}]}

2 个答案:

答案 0 :(得分:0)

只需打开文本文件并阅读所有文本,然后由您决定是将JSON解析为对象还是在整个字符串上运行IndexOf。

以下是如何从文件中读取文本

public String readFile(File fFileIn) throws IOException{
    if(fFileIn == null) return "";
    if(!fFileIn.exists()) return "";

    FileInputStream fis = new FileInputStream(fFileIn);
    byte [] bContent = new byte[(int) (fFileIn.length() + 1)];
    fis.read(bContent);
    return new String(bContent, Charset.defaultCharset());
}

答案 1 :(得分:0)

使用Web服务时,建议您维护本地和持久存储,以便进行脱机访问。

完成本教程:http://androidituts.com/android-sqlite-database-tutorial/

只需要更改的部分是,而不是:

Category_ID.add(Long.parseLong(object
                        .getString("school_id")));
Category_name.add(object.getString("name"));

您只需要编写数据库的插入查询,这也在上面的教程中提到过。

希望我的建议适合你需要......