java.lang.NullPointerException:尝试获取与'无法读取空数组'相关的空数组的长度

时间:2015-11-05 22:53:38

标签: java android directory

我从模拟器中得到一个“不幸的'App Name'已停止”消息。我认为脚本无法找到文件夹或无法读取文件名。附加了res文件夹的照片。我试过像“res / drawable”“/ res / drawable /”等的东西,但我得到了相同的结果。 我在清单文件中使用了以下权限,但无济于事。

from validate_email import validate_email
is_valid = validate_email('example@example.com')

我检查了所有与stackoverflaw相关的链接,但无法解决我的问题。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我的主要活动文件请特别注意我为文件提供的路径

package chessactivepgnviewer.com.pgnviewer;

import java.io.File;
import java.util.ArrayList;

/**
 * Created by serhat on 04.11.2015.
 */
public class klasor {
    private String drawable;
    private ArrayList<File> files;

    public void listf(String drawable, ArrayList<File> files) {
        File directory;
        directory = new File(drawable);

        // get all the files from a directory
        File[] fList = directory.listFiles();
        for (File file : fList) {
            if (file.isFile()) {
                files.add(file);
            } else if (file.isDirectory()) {
                listf(file.getAbsolutePath(), files);
            }
        }
    }
}

这是logcat

package chessactivepgnviewer.com.pgnviewer;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import java.io.File;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.satranc_tahtasi);

        File folder = new File("D:/Android_Dosyalar/Proje/PGNViewer/app/src/main/res/drawable");
        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                System.out.println("File " + listOfFiles[i].getName());
            } else if (listOfFiles[i].isDirectory()) {
                System.out.println("Directory " + listOfFiles[i].getName());
            }
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您应该修改您尝试访问的路径,然后更改此

File folder = new File("D:/Android_Dosyalar/Proje/PGNViewer/app/src/main/res/drawable");

到设备中的路径,例如:

File folder = new File("/data/chessactivepgnviewer.com.pgnviewer/");

答案 1 :(得分:0)

你的问题在于以下几点:

File folder = new File("D:/Android_Dosyalar/Proje/PGNViewer/app/src/main/res/drawable");
File[] listOfFiles = folder.listFiles();

如listOfFiles,似乎是null。

如果您想获得所有可绘制的列表,可能需要尝试:

Field[] drawables = chessactivepgnviewer.com.pgnviewer.R.drawable.class.getFields();

for (Field f : drawables) {
    try {
         System.out.println("R.drawable." + f.getName());
    } catch (Exception e) {
         e.printStackTrace();
    }
}

答案 2 :(得分:0)

该文件夹不存在。因此,folder.listFiles()返回null。

如果你在apk中放置一张图片,请使用assets文件夹。