如何获取.json
配置文件的所有列表,这些配置文件不在SD卡上,而是在我的包中?图像上的Bellow显示了我想要访问的文件夹中的文件。这个想法如下:当应用程序启动时,我想获取配置文件列表,它们的路径,并显示给测试人员选择连接到哪个服务器。我怎样才能做到这一点?我一直在寻找PackageManager
和AssetManager
,但没有结果。
当我将文件夹配置放到文件夹资源时,这段代码会给我一个可用配置列表,但是我怎样才能获得完整的路径来阅读它们呢?
AssetManager am = getAssets();
String s = getPackageName();
Resources tmp = pm.getResourcesForApplication(s);
String [] arr = am.list("configs2");
答案 0 :(得分:1)
为了做类似的事情,我使用了以下命令:
InputStream is = context.getResources().openRawResource(R.raw.raw_data_file);
文件raw_data_file
位于路径res/raw/raw_data_file.txt
中。然后,您可以正常使用InputStream读取文件。我相信你能够对你的文件执行类似的操作,但通常我会在res(ources)
文件夹中放置任何资源
答案 1 :(得分:1)
我终于解决了我的问题。这是我项目的结构:
要从应用程序包中获取文件列表,您需要将要获取的所有文件放入assets文件夹中。这是代码:
private ArrayList getPackageConfigList() { AssetManager am = getAssets(); String [] 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;
}
private String loadConfigFromPackage(String fileName) { AssetManager am = getAssets(); InputStream in = null; String result = 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;
}