从Android资源文件夹读取xml文件

我正在尝试从assets文件夹中读取同一个文件“ xmlfile.xml ”,并从SD卡sdcard / download /中读取另一个副本。

我可以从SD卡读取:

  • unfile返回True
  • Esite Return True

我不能从资产文件夹中读取:

  • unfile返回False
  • Esite返回False

这个代码不工作

File source = new File("file:///android_asset/xmlfile.xml"); boolean unfile = source.isFile(); boolean Esiste = source.exists(); try { // todo } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 

这个代码正在工作

  File source = new File("/sdcard/" + "download" + "/" + "xmlfile.xml"); boolean unfile = source.isFile(); boolean Esiste = source.exists(); try { // todo } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 

有人可以解释我怎样才能从资产文件夹中读取文件。

感谢marco

Solutions Collecting From Web of "从Android资源文件夹读取xml文件"

要打开一个资产,你需要下面的一段代码:

 InputStream is = getAssets().open("xmlfile.xml") 

使用此function

 // Converting given XML file name to String form String mOutputText = getxml("yourxml.xml"); /** * Function used to fetch an XML file from assets folder * @param fileName - XML file name to convert it to String * @return - return XML in String form */ private String getXml(String fileName) { String xmlString = null; AssetManager am = context.getAssets(); try { InputStream is = am.open(fileName); int length = is.available(); byte[] data = new byte[length]; is.read(data); xmlString = new String(data); } catch (IOException e1) { e1.printStackTrace(); } return xmlString; } 

这一定会帮助你。 为了读取文件表单资产文件夹,你需要一个InputStream对象。

句法:

 InputStream yourobj=getApplicationContext().getAssets().open("Path to xml file"); 

所以现场的代码可以是

 InputStream in_s = getApplicationContext().getAssets().open("www/application/app/client/controllers/data1.xml"); 

这里data1.xml是path中的文件。

  try { AssetManager aManager = Class.getAssets(); InputStream iStream = aManager.open("file.xml"); int length = iStream.available(); byte[] data = new byte[length]; iStream.read(data); assetString = new String(data).toString(); } catch (IOException e) { e.printStackTrace(); }