android从包中获取文件列表

android从包中获取文件列表,android,android-resources,Android,Android Resources,我如何获得.json配置文件的所有列表,这些文件不在SD卡上,而是在我的包中?下图显示了我想要访问的文件夹中的文件。其思想如下:当应用程序启动时,我希望获得配置文件的列表、路径,并将其显示给测试人员,以选择连接到哪个服务器。我该怎么做?我正在寻找PackageManager和AssetManager,但没有结果 当我将文件夹配置放在文件夹资产中时,这段代码会给我一个可用配置的列表,但是我如何才能获得它们的完整路径来读取它们呢 AssetManager am = getAssets(); Stri

我如何获得
.json
配置文件的所有列表,这些文件不在SD卡上,而是在我的包中?下图显示了我想要访问的文件夹中的文件。其思想如下:当应用程序启动时,我希望获得配置文件的列表、路径,并将其显示给测试人员,以选择连接到哪个服务器。我该怎么做?我正在寻找
PackageManager
AssetManager
,但没有结果

当我将文件夹配置放在文件夹资产中时,这段代码会给我一个可用配置的列表,但是我如何才能获得它们的完整路径来读取它们呢

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

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

InputStream is=context.getResources().openRawResource(R.raw.raw\u数据文件)


其中文件
raw\u data\u file
位于路径
res/raw/raw\u data\u file.txt
中。然后可以像平常一样使用InputStream读取文件。我相信您可以在文件所在的位置执行类似的操作,但通常我会将所有资源放在
res(ources)
文件夹中,我最终解决了我的问题。这是我的项目结构:

  • 若要从应用程序包中获取文件列表,需要将所有要获取的文件放入“资产”文件夹。代码如下:

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

    }


  • 谢谢我可以从当前位置的“configs”文件夹中获取文件吗?请尝试
    am.open(configs/fileName)
    ,它会再次返回InputStream,很高兴您解决了问题!虽然不建议将其作为字节缓冲区读入,但使用BufferedReader更安全:
    BufferedReader reader=new BufferedReader(new InputStreamReader(input\u stream))
    然后使用
    reader.readLine()
                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;
            }
    
    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;