2012-06-22 4 views
10

У меня есть html-файл в активах, aaa.html. Я хочу прочитать содержимое html-файла и заменить его на другую строку.Прочитать HTML-файл из активов

Этот способ является правильным или есть какой-либо другой вариант.

мой код:

File f = new File("file:///android_asset/aaa.html"); 
FileReader fr = new FileReader(f); 
BufferedReader br = new BufferedReader(fr); 

Но ее давая файл не найден, где, как нагрузка на веб-просмотра загружает файл.

+2

http://www.javacodegeeks.com/2012/02/android-read-file-from-assets.html –

+0

Возможный дубликат [как читать содержимое html из папки ресурсов в android] (https://stackoverflow.com/questions/8603222/how-to-read-html-content-from-assets-folder-in-android) – Suhaib

ответ

34
InputStream is = getAssets().open("aaa.html"); 
int size = is.available(); 

byte[] buffer = new byte[size]; 
is.read(buffer); 
is.close(); 

String str = new String(buffer); 
str = str.replace("old string", "new string"); 
+0

Спасибо большое, это сработало. – zaiff

+0

Я заменил строку сейчас, я хочу снова сохранить эту обновленную строку в этом файле? – zaiff

+1

Вы не можете сохранить этот файл, потому что ВСЕ ДЕТАЛИ в папке ASSET являются ЧИТАЕМОГО, но вы можете загрузить эту строку непосредственно в WebView – MAC

3

Если вы хотите загрузить файл в WebView затем использовать этот

mWebView.loadUrl("file:///android_asset/myfile.html"); 

вы хотите заменить содержимое внутри тегов файлов Html поэтому код класса решения здесь ..

public class CardDetail { 
    public static String newHtmlString = ""; 

    // private Context context; 

    @SuppressWarnings("rawtypes") 
    public String getNewHtmlString(String htmlString, HashMap hm) { 
     try { 
      StringTokenizer st = new StringTokenizer(htmlString, "##"); 
      CardDetail.newHtmlString = ""; 
      while (st.hasMoreTokens()) { 
       String token = st.nextToken(); 
       CardDetail.newHtmlString += token; 
       if (st.hasMoreTokens()) { 
        String token2 = st.nextToken(); 
        if (token2.equals("NAME") || token2.equals("POSITION") || token2.equals("COMPANY") || token2.equals("PHOTOURL")) 
         CardDetail.newHtmlString += hm.get(token2); 
        if (token2.equals("SKYPE_CONTAINER1") 
          || token2.equals("TWITTER_CONTAINER1") 
          || token2.equals("PHONENUMBER_CONTAINER1") 
          || token2.equals("EMAIL_CONTAINER1") 
          || token2.equals("ADDRESS_CONTAINER1")) { 
         String replaceString = st.nextToken(); 
         String tokenMiddle = (String) hm.get(st.nextToken());      
         if (!tokenMiddle.equals("")) { 
          replaceString += tokenMiddle; 
          CardDetail.newHtmlString += replaceString + st.nextToken(); 
          st.nextElement(); 
         } else { 
          st.nextElement(); 
          st.nextElement(); 
         } 
        } 
       } 
      } 
//   Log.i("convertedHTMLString", newHtmlString); 
      return CardDetail.newHtmlString; 

//   htmlString = "<img src='" + hm.get("PHOTOURL") + "' width=80 height=80>";   
//   return htmlString; 
     } catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @SuppressWarnings("unchecked") 
    public HashMap<?, ?> getProfileHashMap(JSONObject jsonObject) { 
     @SuppressWarnings("rawtypes") 
     HashMap hm = new HashMap(); 
     jsonObject = (new JSONConverterClass()).convertJsonObjectToCardDetail(jsonObject); 
     try { 
      hm.put("EMAIL", jsonObject.getString("email")); 
      hm.put("NAME", jsonObject.getString("firstname") + " " + jsonObject.getString("lastname")); 
      hm.put("COMPANY", jsonObject.getString("company_name")); 
      hm.put("POSITION", jsonObject.getString("position")); 
      hm.put("WEBSITE", jsonObject.getString("website")); 
      hm.put("PHONENUMBER", jsonObject.getString("phonenumber")); 
      hm.put("PHOTOURL", jsonObject.getString("picture_url")); 
      hm.put("SKYPE", jsonObject.getString("skype_username")); 
      hm.put("TWITTER", jsonObject.getString("twitter_username")); 
      hm.put("ADDRESS", jsonObject.getString("generic_location")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return hm; 
    } 
} 

convertJsonObjectToCardДетали этого класса просто заменить строку значениями от Json надеюсь, что это решает вашу проблему ....

+0

Позвольте мне знать, что это работает для вас .. если помогает оценить. – MobileEvangelist

Смежные вопросы