4

如何获取.json不在 SD 卡上但在我的包中的所有配置文件列表?图像上的波纹管显示了我要访问的文件夹中的文件。这个想法如下:当应用程序启动时,我想获取配置文件列表,它们的路径并将其显示给测试人员以选择连接到的服务器。我怎样才能做到这一点?我一直在寻找PackageManagerand AssetManager,但没有结果。

当我将文件夹配置放入文件夹资产时,此代码会向我展示可用配置的列表,但是如何获取它们的完整路径以读取它们?

AssetManager am = getAssets();
String s = getPackageName();
Resources tmp = pm.getResourcesForApplication(s);
String [] arr = am.list("configs2");

快照

4

2 回答 2

1

为了做类似的事情,我使用了以下命令:

InputStream is = context.getResources().openRawResource(R.raw.raw_data_file);

文件raw_data_file在路径中的位置res/raw/raw_data_file.txt。然后,您可以正常使用 InputStream 读取文件。我相信你可以对你的文件做类似的事情,但作为一项规则,我通常会将任何资源放在res(ources)文件夹中

于 2013-02-01T14:34:54.060 回答
1

我终于解决了我的问题。这是我的项目的结构: 在此处输入图像描述

  1. 要从应用程序包中获取文件列表,您需要将要获取的所有文件放入 assets 文件夹中。这是代码:

    私有 ArrayList getPackageConfigList() { AssetManager am = getAssets(); 字符串 [] arr = null; 尝试 { arr = am.list(文件夹); } catch(IOException e) {e.printStackTrace();}

                ArrayList<String> flist = new ArrayList<String>();
    
                for (int i=0; i<arr.length; i++)
                {
                    flist.add(PKG + arr[i]);
                    Log.d(tag, PKG+ arr[i]);
                }
    
                return flist;
            }
    
    1. 从包中读取具体文件:

    private String loadConfigFromPackage(String fileName) { AssetManager am = getAssets(); InputStream in = null; 字符串结果 = null;

    try
    {
        //open file, read to buffer, convert to string
        in = am.open(folder + "/" + fileName);
        int size = in.available();
        byte[] buffer = new byte[size];
        in.read(buffer);
        in.close();
        result = new String(buffer);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        try
        {
            in.close();
        }
        catch(Exception ex){}
    }
    return result;
    

    }

于 2013-02-01T21:09:14.490 回答