计算资产子文件夹中的文件

时间:2016-11-02 21:14:29

标签: java android

我在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);
    }

如何解决?

2 个答案:

答案 0 :(得分:0)

您需要访问以下资产:

fileCount = getResources().getAssets().list("s1").length;

getResources()会返回您应用的Resources个实例。调用getAssets()会返回AssetManager。资产中的文件不存在于文件系统中,因此您无法像普通文件那样打开和读取它们。

答案 1 :(得分:0)

使用getAssets().open(path); 如果没有子文件夹,则从资产层次结构或文件名中的文件夹名称开始。