2012-06-22 14 views
10

Tengo un archivo html en assets, aaa.html. Quiero leer el contenido del archivo html y reemplazarlo de otra cadena.Leer el archivo HTML de los recursos

De esta manera es correcto o hay alguna otra opción.

mi código:

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

Sin embargo, su archivo no encontrado dando, donde como carga en vista web carga el archivo.

+2

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

+0

Posible duplicado de [cómo leer el contenido html desde la carpeta de activos en Android] (https://stackoverflow.com/questions/8603222/how-to-read-html-content-from-assets-folder-in-android) – Suhaib

Respuesta

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

Muchas gracias, funcionó. – zaiff

+0

He reemplazado la cadena ahora, quiero guardar esta cadena actualizada en ese archivo de nuevo? – zaiff

+1

No puede guardar ese archivo porque TODOS LOS ELEMENTOS en la carpeta ASSET son READ-SOLO pero puede cargar esa cadena directamente en WebView – MAC

3

Si desea cargar el archivo en vista web a continuación, utilizar este

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

desea reemplazar el contenido dentro de las etiquetas de archivos HTML para el código de clase solución está aquí ..

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; 
    } 
} 

convertJsonObjectToCardDetail esta clase solo reemplaza cadena con valores de Json espero que esto resuelva tu problema ....

+0

Avíseme si funciona para usted ... si ayuda a apreciar. – MobileEvangelist

Cuestiones relacionadas