【问题标题】:Android load local xml fileAndroid加载本地xml文件
【发布时间】:2011-10-19 12:55:50
【问题描述】:

我正在使用 Eclipse。有谁知道这段代码试图从哪里获取文件? 我已将文件复制到项目文件夹以及 srr/package_path 文件夹。

public String getFromFile(ASerializer aserializer) {
    String data = new String();
    try {
    FileInputStream stream = new FileInputStream(new File(aserializer.toLocalResource()));
       FileChannel fc = stream.getChannel();
        MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
        /* Instead of using default, pass in a decoder. */
        data  = Charset.defaultCharset().decode(bb).toString();
        stream.close();
    }
    catch (Exception e){
        data = "File not found";
    }
    return data;
}

【问题讨论】:

  • 请提供更多关于ASerializer类的信息
  • 序列化器只返回文件名。我只是不知道 getFromFile 在哪里看。什么是默认文件夹?

标签: android eclipse file local


【解决方案1】:

由于使用了FileInputStream,该代码会将文件路径解释为整个 Android 文件系统上文件的路径。也就是说,文件系统根将是整个 Android 系统所在的文件系统的根,而不是在您的应用程序资源中的某个位置。

如果要根据文件名从应用程序资源中加载文件,可以将文件放在 Eclipse 应用程序项目的“assets”目录中,然后使用:

InputStream inputStream = getResources().getAssets().open("file.xml");

获取要使用的文件的InputStream。给AssetManager.open() 的路径是相对于“资产”目录的。您还可以在子目录中组织文件:

InputStream inputStream = getResources().getAssets().open("subdirectory/file.xml");

【讨论】:

  • 在资产文件夹中,我不得不将 .xml 文件重命名为 .txt,因为程序会解析它们的内容,但无论如何,这是移动它们的地方,谢谢!
【解决方案2】:

我认为它要么是 assets 文件夹,要么是 res 文件夹 我建议使用 DDMS 文件资源管理器来查找确切位置

在 Eclipse 中转到 DDMS 一次转到文件资源管理器选项卡 您应该在 data/data/package name 中找到您的应用程序(可能稍微偏离记忆)搜索您的包名称中的文件夹

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2011-11-27
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多