8

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

我可以从 SD 卡读取:

  • 解压返回
  • Esite 返回

我无法从 Assets 文件夹中读取:

  • 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();
        }

有人可以解释我如何从 Assets 文件夹中读取文件。

谢谢马可

4

5 回答 5

12

要打开资产,您需要以下代码:

InputStream is = getAssets().open("xmlfile.xml")
于 2012-05-11T11:42:15.803 回答
7

使用此功能

// 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;
}
于 2012-05-11T12:03:39.237 回答
0
    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();
    }
于 2015-04-06T05:53:02.360 回答
0

这肯定会帮助你。要读取文件表单资产文件夹,您需要一个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是路径内的文件。

于 2016-07-14T13:53:28.150 回答
0

我发现执行以下操作更容易:

val xmlStream = context.resources.getXml(R.xml.example)

我相信这是 XmlPullParser 的一个子集,但它已经足够好了。

于 2020-10-06T22:26:45.140 回答