Каким образом возможно брать файлы из папки Android и читать их?

Столкнулся с такой проблемой: при выполнении данного кода, постоянно появляется ошибка:

020-06-14 18:08:51.371 2240-2485/? E/AndroidRuntime: FATAL EXCEPTION: Thread-2
    Process: com.softwaregardens.fl_project2, PID: 2240
    java.lang.NullPointerException: Attempt to get length of null array
        at com.softwaregardens.fl_project2.Background.checkFiles(Background.java:74)
        at com.softwaregardens.fl_project2.Background$1.run(Background.java:58)
        at java.lang.Thread.run(Thread.java:764)

Код:

public class Background extends Service {
    //переменные
        //Переменные Email
    private final String emailAddress = "";
    final String LOG_TAG = "MyLogs";

        //системные (Директорные)
    private final String filesDirectory = "/storage/emulated/0/Sputnik.Droid/Export/";
    private ArrayList<String> fileNames;
    private File folder = new File(filesDirectory);

    public Background() {}

    @Override
    public IBinder onBind(Intent intent) {
        p_check();
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        Log.d(LOG_TAG, "onCreate");
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG_TAG, "onStartCommand");
        p_check();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    //периодическая проверка файла
    void p_check() {
        Log.d(LOG_TAG, "Cycle");
        Thread run = new Thread(new Runnable() {
            @Override
            public void run() {
                while(true) {
                    try {
                        checkFiles();
                        Log.d(LOG_TAG, "Cycle up");
                        Thread.sleep(1000 * 300);
                    } catch(InterruptedException ex) {
                    }
                }
            }
        });

        run.start();
    }

    void checkFiles() {
        Log.d(LOG_TAG, "checkFiles");
        String t_fileName = "";
        File[] listOfFiles = folder.listFiles();
        for(File file : listOfFiles) {
            if(file.isFile()) {
                t_fileName = file.getName().toString();
                if(!fileNames.contains(t_fileName)) {
                    Log.d(LOG_TAG, "isFile");
                    fileNames.add(t_fileName);
                } else {
                    Log.d(LOG_TAG, "isNotFile");
                }
            }
        }

        readFiles();
    }

    void readFiles() {
        Log.d(LOG_TAG, "readFiles");
        try {
            for(String fileName : fileNames) {
                BufferedReader br = new BufferedReader(new InputStreamReader(openFileInput(fileName)));
                String str = "";
                String s_str = "";
                while((str = br.readLine()) != null) {
                   s_str = str;
                }
                sendEmail(s_str);
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
    }

Ответы (0 шт):