我在assets
文件夹中有一个名为s1
的文件夹。其中有大约一百个文本文件。我想要计算该文件夹中有多少文本文件。
应用程序在启动时因此错误而崩溃:`
Caused by: java.lang.NullPointerException: Attempt to get length of null array
以下是MainActivity
中的代码:
Integer fileCount = 0;
fileCount = Integer.valueOf(new File("./assets/s1/").listFiles().length);
for(int i=0;i<fileCount;i++) {
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("button "+(i+1));
btn.setLayoutParams(lprams);
final int index = i;
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("TAG", "The index is" + index);
}
});
dynamicview.addView(btn);
}
如何解决?
答案 0 :(得分:0)
您需要访问以下资产:
fileCount = getResources().getAssets().list("s1").length;
getResources()
会返回您应用的Resources
个实例。调用getAssets()
会返回AssetManager
。资产中的文件不存在于文件系统中,因此您无法像普通文件那样打开和读取它们。
答案 1 :(得分:0)
使用getAssets().open(path);
如果没有子文件夹,则从资产层次结构或文件名中的文件夹名称开始。